gpt4 book ai didi

node.js - Mongoose:为什么 $addtoset 添加不正确的 ObjectId

转载 作者:太空宇宙 更新时间:2023-11-03 22:37:21 24 4
gpt4 key购买 nike

我正在尝试使用 mongoose 将项目添加到 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 是在我实际添加的 ID 之后立即生成的。上面的示例 objectid 是运行代码的实际示例。

此方法是在回调中从实际生成我要添加的 ObjectId 的方法中调用的...我的问题可能与此相关吗?

任何关于为什么会发生这种情况的帮助/想法将不胜感激。

我找到了this similar question就这样,但他们的解决方案似乎非常适合他们的情况,我无法从那里的答案中得到任何想法......

最佳答案

根据 API 文档,选项字段中的属性“new”必须为 true 才能返回修改后的文档。否则,默认返回原始文档。

http://mongoosejs.com/docs/api.html#model_Model.findByIdAndUpdate

关于node.js - Mongoose:为什么 $addtoset 添加不正确的 ObjectId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24907999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com