首页 > 解决方案 > MongoDb:在数组中推送文档时出错

问题描述

我需要后端方面的帮助。我正在使用邮递员,这是我的后端模型:

name: {
        type: String,
        required: [true, 'Department Name is Required']
    },
    description: {
        type: String,
        required: [true, 'Description is Required']
    },
agents: [
        {
            agentId: {
                type: String,
                required: [true, 'Agent ID is Required']
            },
            createdOn: {
                type: String,
                default: new Date()
            }
        }
]

我想要做的是在代理数组中推送文档,但我遇到了一些错误。

路由和控制器如下:

Routes:
router.post('/enroll', (req, res) => {
    UserController.enroll(req.body).then(result => res.send(result))
});
Controllers:
module.exports.enroll = (params) => {
    return Department.findById({departmentId: params.departmentId}).then(department => {
        department.agents.push({userId: params.userId})

        return department.save().then((department, error) => {
            return (err) ? false : true
        })
    })
}

这是我得到的错误: (node:9916) UnhandledPromiseRejectionWarning: CastError: Cast to ObjectId failed for value "{ departmentId: '60e27549c36af1272812c4e3' }" (type Object) at path "_id" for model "Department"

目标是查找部门 ID,并将推送我已经获取的代理 ID。

标签: node.jsmongodbmongodb-query

解决方案


尝试

改变

return Department.findById({departmentId: params.departmentId}).

return Department.findById(params.departmentId)


findById只接受 id 而不是 Object


推荐阅读