Javascript 关于mongoose方法回调函数中错误的文档

Javascript 关于mongoose方法回调函数中错误的文档,javascript,mongoose,callback,Javascript,Mongoose,Callback,我开始在我的web开发中处理关键场景,到目前为止,我从来没有太注意代码回调中的err,通常我所做的只是例如: Model.find({'_id': someId}, function(err, doc) { if(err) console.log(err) else { // do business logic }) 问题是,我并没有在收到错误的情况下绊倒,我想要一个关于为什么会抛出这些错误的完整说明,这样我就可以为生产场景准备代码 我查看了一些文档,但我找不到关于为什么会抛出错误的完整综

我开始在我的web开发中处理关键场景,到目前为止,我从来没有太注意代码回调中的err,通常我所做的只是例如:

Model.find({'_id': someId}, function(err, doc) {
 if(err) console.log(err)
 else { // do business logic })
问题是,我并没有在收到错误的情况下绊倒,我想要一个关于为什么会抛出这些错误的完整说明,这样我就可以为生产场景准备代码


我查看了一些文档,但我找不到关于为什么会抛出错误的完整综述,是否存在这样的资源?

在mongoose的mongodb操作过程中,有许多可能抛出错误的场景。例子包括

一,。 在您的情况下:如果为获取文档而传递的id无效(即无法转换为objectId)。这可能是一个开发人员错误,在这种情况下,他可能会向方法传递一个无效的id,因为通常不要求用户输入id。要覆盖所有可能的循环漏洞或充当防御性程序员,您需要通过返回带有适当消息的
notfound
状态来处理该实例中的错误,如下所示。然后,开发人员检查返回对象的状态或消息以采取适当的行动

Model.find({'_id': someId}, function(err, doc) {
    if(err) {
        console.log(err);
        return { 
            status: 'Not Found',
            message: 'Possible Invalid ID or Document does not exist'
        }
    }else { // do other business logic }
})
  • 在更新场景中,如果为获取文档而传递的id无效(即无法转换为objectId)或文档不存在(即id与任何文档不匹配),则可能会出现错误。可以使用类似的方法来处理第1点中的错误

  • 在执行需要处理错误的
    删除
    创建
    时,也可能会出现其他错误

  • 最后,可能需要处理错误,因为某种疏忽(例如语法)也可能引发错误

    在所有这些内容中,我想补充一点,mongoose错误对象通常可以是引用自的以下形式(由于重复键导致的创建错误的示例)


    这些都很有趣,我也想到了一些。谢谢你的链接,我希望有一些全面的列表,但这是一个公平的开始。
    {
        [MongoError: insertDocument :: caused by :: 11000 E11000 duplicate key error 
        index: mydb-api.users.$email_1  dup key: { : "my@duplicate.com" }]
        name: 'MongoError',
        code: 11000,
        err: 'insertDocument :: caused by :: 11000 E11000 duplicate key error index: mydb-api.users.$email_1  dup key: { : "my@duplicate.com" }' }
    }