Tengo un problema con la actualización de documentos incrustados.Mongoose embedded document updating
Mis esquemas definidos:
var Talk = new Schema({
title: {
type: String,
required: true
},
content: {
type: String,
required: true
},
date: {
type: Date,
required: true
},
comments: {
type: [Comments],
required: false
},
vote: {
type: [VoteOptions],
required: false
},
});
var VoteOptions = new Schema({
option: {
type: String,
required: true
},
count: {
type: Number,
required: false
}
});
Ahora me gustaría actualizar vote.count++
, con dada Talk
Identificación y VoteOption
ID. Tengo la siguiente función para hacer el trabajo:
function makeVote(req, res) {
Talk.findOne(req.params.id, function(err, talk) {
for (var i = 0; i < talk.vote.length; i++) {
if (talk.vote[i]._id == req.body.vote) {
talk.vote[i].count++;
}
}
talk.save(function(err) {
if (err) {
req.flash('error', 'Error: ' + err);
res.send('false');
} else {
res.send('true');
}
});
});
}
Todo lo ejecuta, yo recuperar el res.send('true')
, pero el valor de recuento no cambia.
Cuando hice algo de console.log
vi que cambió el valor, pero el talk.save
simplemente no lo guarda en db.
También estoy bastante descontento con el ciclo solo para encontrar _id
de embedded doc. En la documentación de la mangosta, leí acerca de talk.vote.id(my_id)
, pero eso me da el error de no tener una función id
.
Hero of the day! – MrBr