arrays - MongoDB 尝试删除数组项时出错

标签 arrays node.js json mongodb post

我正在尝试从 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: Parameter "obj" to Document() must be an object, got Random party.

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

感谢您的帮助。

最佳答案

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

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

should be

var n_description = req.body.description;

已经解决了!

关于arrays - MongoDB 尝试删除数组项时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58474521/

相关文章:

node.js - TypeError : db. 集合不是函数

javascript - 变量未返回所需的对象

java - @JsonCreator 不适用于 Spring MVC 中的 @RequestParams

javascript - 是否可以读取另一台服务器中的 json 文件,如何读取?

jquery - 从 MVC Controller 返回 JSON 字符串

javascript - JS 如何从each循环内的数组内的数组中获取对象值

ios - IOS 中的 Tableview Controller 加载数组错误

java - 在一行上打印随机数组 : Java

arrays - VBA检查多维变量的整行是否为空而不循环

node.js - 在 Express 中使用 Multer 设置响应状态?