gpt4 book ai didi

javascript - NodeJS 无法在 MongoDB 中添加 ToSet

转载 作者:可可西里 更新时间:2023-11-01 10:42:40 26 4
gpt4 key购买 nike

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

我检查了数据库中的两个 ID 和列表本身也存在(街道 = 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 ]

关于javascript - NodeJS 无法在 MongoDB 中添加 ToSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34320312/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com