Javascript NodeJS无法在MongoDB中添加ToSet
我想更新JSON中的一个字段,它是一个包含元素(简单,呃?)的数组。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
我想将
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谢谢!您的解决方案有效=]如果您愿意,请将其作为答案发布,以便我可以接受。