尝试删除数组项时出现 MongoDB 错误



我正在尝试从MongoDB模型中的数组中删除一个项目。 这是我的国家模型:

const CountrySchema = mongoose.Schema({
name: { type: String, required: true },
holidays: 
[
{
day: {type: Number, required: true},
month: {type: Number, required: true},
description: { type: String, required: true }
},
],
states: { type: [String], required: true }
});

我已经在数据库中有几个国家,我有一个端点,可以从该国删除假期。我从请求参数中获得了国家/地区名称,并从 POST 提供了假期信息。诸如此类:

{
"day": 10,
"month": 4,
"description": "Random party"
}

所以我的函数 deleteHoliday 是这样的:

function deleteHoliday(req, res) {
var country_name = req.params.country_name;
var n_description = new Country(req.body.description);
let query = Country.update({ 'name': country_name }, { '$pull': { holidays: { description: n_description }}})
query.exec( (err, holidays) =>{
//Check if no errors and send json back
if(err){
res.send(err);
}
res.status(200).json({message:"Holiday removed successfully"});
})
}

我不太确定如何执行查询,但是在执行查询之前,我收到下一个错误:

ObjectParameterError:Document(( 的参数 "obj" 必须是一个对象,得到随机方。

我只想删除带有给定描述的假期项目。在这种情况下 随机方。

感谢您的帮助。

抱歉,我犯了一个错误,我传递的对象类型是国家/地区而不是描述。

var n_description = new Country(req.body.description);
should be
var n_description = req.body.description;

艾瑞迪解决了!

错误在这里,

var n_description = new Country(req.body.description);

需要一个简单的字符串,请相应地更改此字符串。

最新更新