NodeJS无法在MongoDB中添加ToSet
NodeJS unable to addToSet in MongoDB
我想更新JSON中的一个字段,它是一个带有元素(simple,嗯?)的数组
我想将userid
添加到reportedUsersIDs
数组中
我正在运行的查询(通过POSTMAN):
http://localhost:3000/api/listing/myStreet/1/1/addReportedUser/564b343fbc2d4310156c6bf9/5671a8f694745bfce5bf6ecf
我检查了数据库中是否存在两个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没有更新?
由于reportedUsersIDs
在您的模式中被声明为String
的数组,因此您也应该将它们添加为字符串,而不是ObjectId
:
{ $addToSet : { reportedUsersIDs : idToAdd } }
或者,您可以更改模式,使其成为ObjectId
:的数组
reportedUsersIDs : [ Schema.Types.ObjectId ]
相关文章:
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何在映射数组中添加换行符
- 正在将数据主题添加到所有项目
- ZeroClipboard-在复制之前添加到值
- 我可以在json对象中添加一个函数吗
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 正在SharePoint 2013母版页中添加JQuery移动文件
- 如何添加浮动和非浮动,其他
- 添加文字和评论功能更新Div
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 在函数中添加数组元素的数值
- 如何将歌曲添加到jPlayer
- 在html Select中添加搜索
- Java脚本时间添加
- FabricJs-限制主对象内添加对象的移动区域
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- 如何在Google柱状图中动态添加行/列
- 正在尝试使用if和else添加类,但无法正常工作
- NodeJS无法在MongoDB中添加ToSet