Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Mongoose:为什么$addtoset添加了不正确的ObjectId_Node.js_Mongodb_Mongoose - Fatal编程技术网

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

Node.js Mongoose:为什么$addtoset添加了不正确的ObjectId,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我试图使用mongoose将一个项目添加到ObjectId的数组中-我使用$addtoset,因为我只希望在项目不存在时添加该项目 然而,我的行为变得非常奇怪$addtoset正在向数组追加objectId,但它不是我要传递给它的对象 我已经从代码中删除了所有其他内容,以尝试缩小范围,现在该方法与下面一样简单,它仍然在发生 userSchema.statics.addPlaylistToUser = function(user, playlistId, done){ var toss

我试图使用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的方法在回调中调用的。。。我的问题可能与此有关吗

如果您能提供任何关于为什么会发生这种情况的帮助/想法,我们将不胜感激


我发现是这样的,但他们的解决方案似乎非常特定于他们的情况,我无法从答案中得到任何想法…

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


我正在尝试重新创建您的问题,在我的情况下,它总是运行良好。是否还有其他可能导致这种行为的因素。你是不是在任何地方错误地调用了一个函数两次?也许是string对ObjectId的情况?