我是新來的貓鼬所以這可能是非常簡單..但是。節點,Mongoose:保存()「VersionError:未找到匹配的文檔。」
我有一個非常簡單的模式,它包含數字的簡單數組:
userSchema = new mongoose.Schema({
name : String,
tag_id : String,
badges : [Number]
});
var user = mongoose.model('User', userSchema);
後來我想徽章添加到用戶。所以..
user.findOne({tag_id:tagid}, function(err,doc) {
if (!doc) callback(false, 'no doc');
// check to see if badge is in array, if not add it
if (doc.badges.indexOf(badgeNum) == -1) {
doc.badges.push(badgeNum);
doc.save(function(err) {
if (err) callback(false, err);
else callback(true, '');
});
} else {
callback(false, 'user already had badge')
}
});
但是每當我運行代碼,我得到一個「VersionError:沒有匹配的文件中。」
我做了一點Google搜索,發現在3.x mongoose中添加了版本控制的參考,並且它通常都是在內部處理的。應該注意的是,我通過json和mongo命令行將這個用戶數據直接加載到mongo中(所以它不會有默認定義的版本控制變量,但是我懷疑貓鼬會在沒有找到它時創建它。不好的假設?)
編輯:對不起,我的簡化的例子有一個錯誤。
你可能想要閱讀[亞倫的博客文章](http://aaronheckmann.blogspot.com/2012/06/mongoose-v3- part-1-versioning.html)瞭解versionKey的工作原理。如果要將常規對象保存到數據庫中,貓鼬應該在幕後添加版本控制密鑰。 –
我認爲,如果我沒有記錯,這是全部造成的,因爲我將數據加載。 –
嗨,你是如何將版本字段添加到數據集並修改模式以將其與versionKey關聯的?你能更具體一點嗎?如果這樣會很棒!謝謝!我和你有完全相同的問題... – user1567909