Mongoose обновляет поддокумент, если существует
У меня есть следующая модель:
var VoteSchema = new Schema({
up : Boolean
, createdBy:{type:ObjectId, ref:'users'}
, createdOn : {type:Date, default:Date.now}
});
var QuestionSchema = newSchema({
title:String
, description:String
, votes : [VoteSchema]
, createdBy:{type:ObjectId, ref:'users'}
, createdOn : {type:Date, default:Date.now}
});
var Question = mongoose.model('questions',QuestionSchema);
предполагатьuser1
вошел в систему пользователя иquestion1
является текущим / просматривают вопрос. Пользователь можетupvote
({up: true}) илиdownvote
({up: false}) вопрос в любое время.Как я могуadd
новыйvote
еслиuser1
не проголосовали заquestion1
ещеupdate
голосование.
Я был в состоянии написать следующие строки кода:
QuestionSchema.statics.castVote = function(questionId, vote) {
//NOTE : vote.createdBy equalsto loggedInUserID
Q.nbind(Question.findOne, Question)({
$and:[
{_id:questionId},
{'votes.createdBy':vote.createdBy}
]
}).then(function(doc) {
if(doc) {
//I am clue less
//doc.votes is a list of votes for this question
// how can I get the particular vote casted by the user - vote.createdBy
}else {
//Question.votes.push(vote);
}
});
});