Tôi gặp sự cố với cập nhật tài liệu được nhúng.Mongoose tài liệu nhúng cập nhật
Schemas định nghĩa của tôi:
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
}
});
Bây giờ tôi muốn cập nhật vote.count++
, với trao Talk
id và VoteOption
id. Tôi có chức năng sau đây để thực hiện công việc:
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');
}
});
});
}
Tất cả mọi thứ thực hiện, tôi lấy lại res.send('true')
, nhưng giá trị trên đếm không thay đổi.
Khi tôi thực hiện một số console.log
Tôi thấy rằng nó đã thay đổi giá trị, nhưng talk.save
chỉ không lưu nó trong db.
Ngoài ra tôi khá không hài lòng về chu kỳ chỉ để tìm _id
của tài liệu được nhúng. Trong tài liệu mongoose tôi đọc về talk.vote.id(my_id)
nhưng điều đó cho tôi lỗi khi không có hàm id
.
Anh hùng trong ngày! – MrBr