2
我試圖使用貓鼬將項目添加到ObjectId的數組 - 我使用$ addtoset,因爲我只想添加項目,如果它尚未存在。
但是我收到了很奇怪的行爲。 $ addtoset將一個objectId附加到數組中,但它不是我傳遞給它的那個。
我已經從我的代碼中刪除了一切,試圖縮小它的範圍,現在該方法如下所示,它仍然在發生。
userSchema.statics.addPlaylistToUser = function(user, playlistId, done){
var toss = playlistId.toString(); //I verify at this point the playlistId is correct, eg. ObjectId("53cf855ac551004417e54da2")
User.findByIdAndUpdate(
user._id,
{$addToSet: {playlists: playlistId } },
{safe: true, upsert: false},
function(err, model) {
//at this point, an object Id has been added to the array, but it is not the same as verified above, the objectid added is eg. ObjectId("53cf8572c551004417e54da4")
done(err, model);
})
}
有趣的是,的ObjectID一貫幾乎相同,這表明新的ID是一個我確實加入後立即產生。上面的示例objectid是運行代碼的實際示例。
這種方法被稱爲從實際生成ObjectId的方法回調我試圖添加...是我的問題可能相關嗎?
任何幫助/想法爲什麼這可能會發生將不勝感激。
我發現this similar question對SO,但他們的解決方案似乎非常具體的他們的情況,我是不是能夠得到的答案有什麼想法?
我試圖重新您的問題,在我的情況下,它總是能正常工作。還有什麼可能導致這種行爲。你是不是錯誤地在任何地方調用函數兩次? –
也許這是一個字符串與ObjectId的情況? – ma08