【问题标题】:Deleted object is undefined in MEAN app在 MEAN 应用程序中未定义已删除的对象
【发布时间】:2018-08-14 15:16:02
【问题描述】:

我正在尝试构建一个 MEAN 堆栈 SPA,到目前为止,我已经使用本教程创建了后端服务:https://medium.com/netscape/mean-app-tutorial-with-angular-4-part-1-18691663ea96

当我使用 Postman(POST、PUT、GET)进行测试时,一切正常,但是,当我尝试删除一个对象时,它会导致错误:

{
 "status": 400,
 "message": "TypeError: Cannot read property 'n' of undefined"
}

这是我的删除方法在 todos.service.js 中的样子:

exports.deleteTodo = async function(id){

    try{
        var deleted = await ToDo.remove({_id: id})
        if(deleted.result.n === 0){
            throw Error("Todo Could not be deleted")
        }
        return deleted
    }catch(e){
        throw Error(e)
    }
}

这是我的 todos.controller.js:

exports.removeTodo = async function(req, res, next){

    var id = req.params.id;

    try{
        var deleted = await TodoService.deleteTodo(id)
        return res.status(204).json({status:204, message: "Succesfully Todo Deleted"})
    }catch(e){
        return res.status(400).json({status: 400, message: e.message})
    }

}

当我尝试删除一个对象时,它成功地删除了它(我可以使用 robomongo 看到它已删除它),但是,我收到了我之前写的错误消息。这可能是什么问题?

【问题讨论】:

    标签: node.js mongodb express postman


    【解决方案1】:

    您必须使用 Mongoose v5。模型的remove方法不需要任何参数,返回删除的文档。

    在 v4 remove 中只是直接调用了集合的remove 方法,确实需要条件删除并返回已删除文档的数量。

    package.json 中的猫鼬版本限制为^4.0.0 之类的内容,或者使用更现代的教程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-22
      • 2015-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-20
      相关资源
      最近更新 更多