NodeJS无法在MongoDB

时间:2015-12-16 19:19:03

标签: javascript json node.js mongodb mongoose

我想更新我的JSON中的字段,这是一个带元素的数组(简单,嗯?)。
我想将userid添加到reportedUsersIDs数组。 /> 我正在运行的查询(通过POSTMAN):
http://localhost:3000/api/listing/myStreet/1/1/addReportedUser/564b343fbc2d4310156c6bf9/5671a8f694745bfce5bf6ecf

我检查了DB中存在的ID,并且列表本身也存在(在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);
            }
        })
});

它返回成功,但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没有更新?

1 个答案:

答案 0 :(得分:1)

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

{ $addToSet : { reportedUsersIDs : idToAdd } }

或者,您可以更改架构,使其成为ObjectId

的数组
reportedUsersIDs : [ Schema.Types.ObjectId ]