Sub-documento de atualização do Mongoose, se existir
Eu tenho o seguinte modelo:
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);
Suponhauser1
está logado como usuário equestion1
é a pergunta atual / visualizadora. O usuário podeupvote
({up: true}) oudownvote
({up: false}) uma pergunta a qualquer momento.Como possoadd
uma novavote
se umuser1
não votaram emquestion1
outroupdate
o voto.
Consegui escrever as seguintes linhas de código:
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);
}
});
});