我有嵌入式文檔更新的問題。Mongoose嵌入式文檔更新
我定義的模式:
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
}
});
現在我想更新vote.count++
,給定Talk
ID和VoteOption
ID。我有以下功能做的工作:
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');
}
});
});
}
執行的一切,我回來了res.send('true')
,但此數值不會改變。
當我做了一些console.log
我看到它改變了值,但talk.save
只是不保存在數據庫中。
此外,我很不滿意的週期只是找到_id
嵌入式文檔。在貓鼬的文檔中,我讀到了關於talk.vote.id(my_id)
,但是這給我錯誤沒有id
函數。
今日英雄! – MrBr