Khi tôi cố gắng lưu tài liệu của mình, tôi nhận được lỗi VersionError: No matching document found
, tương tự như this SO câu hỏi.Mongoose: Tăng số phiên bản tài liệu của tôi không hoạt động và tôi gặp lỗi Phiên bản khi cố gắng lưu
Sau khi đọc this bài đăng trên blog, có vẻ như vấn đề là với phiên bản tài liệu của tôi. Rằng tôi đang rối tung với một mảng và vì vậy tôi cần phải cập nhật phiên bản.
Tuy nhiên, gọi document.save()
không hoạt động đối với tôi. Khi tôi đăng xuất tài liệu trước và sau cuộc gọi đến save()
, document._v
là điều tương tự.
Tôi cũng đã thử thực hiện document._v = document._v++
cũng không hoạt động.
Mã
exports.update = function(req, res) {
if (req.body._id) { delete req.body._id; }
User.findById(req.params.id, function(err, user) {
if (err) return handleError(res, err);
if (!user) return res.send(404);
var updated = _.extend(user, req.body); // doesn't increment the version number. causes problems with saving. see http://aaronheckmann.blogspot.com/2012/06/mongoose-v3-part-1-versioning.html
console.log('pre increment: ', updated);
updated.increment();
// updated._v = updated._v++;
console.log('post increment: ', updated);
updated.save(function(err) {
if (err) return handleError(res, err);
return res.json(200, user);
});
});
};
Output
pre increment: { _id: 5550baae1b571aafa52f070c,
provider: 'local',
name: 'Adam',
email: '[email protected]',
hashedPassword: '/vahOqXwCwKQKtcV3KBQeFge/YB0xtqOj+YDyck7gzyALA/IP7u7BfqQhlVHBQT26//XfBTkaOCK2bQXg65OzA==',
salt: 'MvzXW7D4xuyGQBJNeFRoUg==',
__v: 32,
drafts: [],
starredSkims: [],
skimsCreated: [ 5550cfdab8dcacd1a7892aa4 ],
role: 'user' }
post increment: { _id: 5550baae1b571aafa52f070c,
provider: 'local',
name: 'Adam',
email: '[email protected]',
hashedPassword: '/vahOqXwCwKQKtcV3KBQeFge/YB0xtqOj+YDyck7gzyALA/IP7u7BfqQhlVHBQT26//XfBTkaOCK2bQXg65OzA==',
salt: 'MvzXW7D4xuyGQBJNeFRoUg==',
__v: 32,
drafts: [],
starredSkims: [],
skimsCreated: [ 5550cfdab8dcacd1a7892aa4 ],
role: 'user' }
"Phiên bản đã được triển khai để giảm thiểu doc.save() theo thiết kế (không phải Model.update v.v.)" - Tôi không hiểu điều đó có nghĩa là gì. "xác nhận lỗi" - có vẻ như nó đang nói về 'update' và' findByIdAndUpdate', nhưng tôi không làm một trong số đó (tôi đã sử dụng từ "update" do nhầm lẫn trong câu hỏi của mình, nhưng mã của tôi cho thấy rằng tôi ' m gọi 'save()') –