我想更新我的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没有更新?
答案 0 :(得分:1)
由于reportedUsersIDs
在您的架构中声明为String
数组,因此您应该将它们添加为字符串,而不是ObjectId
:
{ $addToSet : { reportedUsersIDs : idToAdd } }
或者,您可以更改架构,使其成为ObjectId
:
reportedUsersIDs : [ Schema.Types.ObjectId ]