Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/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
Javascript NodeJS无法在MongoDB中添加ToSet_Javascript_Json_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript NodeJS无法在MongoDB中添加ToSet

Javascript NodeJS无法在MongoDB中添加ToSet,javascript,json,node.js,mongodb,mongoose,Javascript,Json,Node.js,Mongodb,Mongoose,我想更新JSON中的一个字段,它是一个包含元素(简单,呃?)的数组。我想将userid添加到reportedUsersIDs数组。 我正在运行的查询(通过邮递员): 我检查了数据库中是否存在ID以及列表本身是否存在(on street=myStreet,buildingNumber=1,apartmentNumber=1)。 routes.js中的代码是: app.put('/api/listing/:street/:buildingNumber/:apartmentNumber/addRep

我想更新JSON中的一个字段,它是一个包含元素(简单,呃?)的数组。
我想将
userid
添加到
reportedUsersIDs
数组。
我正在运行的查询(通过邮递员):

我检查了数据库中是否存在ID以及列表本身是否存在(on street=myStreet,buildingNumber=1,apartmentNumber=1)。
routes.js
中的代码是:

app.put('/api/listing/:street/:buildingNumber/:apartmentNumber/addReportedUser/:userid/:listingid', function (req, res) {

    var listingToUpdate = req.params.listingid;
    var idToAdd = req.params.userid;
    Listing.update({_id: ObjectId(listingToUpdate)},
        {$addToSet: {reportedUsersIDs: ObjectId(idToAdd)}}
        , function (err, listing) {
            if (err) {
                res.send("There was a problem adding the reportedUserID to the listing" + err);
            }
            else {
                console.log("Success adding reportedUserID to listing!");
                res.json(listing);
            }
        })
});
它返回successful,但JSON保持不变

相关数据:

我试图更改的列表架构:

var listingSchema = new Schema({
        street          : String,
        buildingNumber  : Number,
        apartmentNumber : Number,
        reportedUsersIDs: [String]
});
和我的用户模式:

var userSchema = new Schema({
    local            : {
        email        : String,
        password     : String
    },
    name             : String
});

为什么我的JSON没有被更新

由于
reportedUsersIDs
在架构中声明为
String
的数组,因此您也应该将它们添加为字符串,而不是作为
ObjectId

{ $addToSet : { reportedUsersIDs : idToAdd } }
reportedUsersIDs : [ Schema.Types.ObjectId ]
或者,您可以更改模式,使其成为
ObjectId
的数组:

{ $addToSet : { reportedUsersIDs : idToAdd } }
reportedUsersIDs : [ Schema.Types.ObjectId ]

我很确定
Model.update()
不会返回文档,那么
列表
到底是什么呢?我是否返回列表对我来说并不重要(或者哪个Model.update()会返回这个问题),但如果你有任何建议,请告诉我!)由于
reportedUsersIDs
是一个
字符串数组
,因此在尝试添加它时,请不要将其转换为
对象ID
。@robertklep谢谢!您的解决方案有效=]如果您愿意,请将其作为答案发布,以便我可以接受。