微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何处理节点 mongoDB 查询中的数据库错误?

如何解决如何处理节点 mongoDB 查询中的数据库错误?

我在节点中有一个代码 - 像这样的sails js mongo db代码,它用于用户注册注册 fn:

try{
    let err;
    let user = await User.create({req.body}).fetch();
    if (!user){
      throw new Error('Failed');
    }
    res.status(200).json({user});
  }catch(e){
    res.status(500).json({e.message});
  }
};

请求体:

{

    "firstName": "jay",// required
    "lastName": "Thomas","email":"yo@gmail.com",// required and unique
    "password": "X12345678",// required
    "languages":["c++","english"]
}

如果我拼错了 email to emal,,它应该通过它执行的数据库错误并发送响应,但它也会在控制台上显示错误,这是我不想要的。我只希望它发送错误作为响应。 我需要为此做出哪些改变?

解决方法

我可以建议使用 Sails 提供的内置响应,而不是使用 res.status 吗? Sails 通过内置的响应函数(例如 return res.serverError(err)return res.badRequest(err))很好地处理响应。

如果您查看您的 /api/responses 路径内部,您应该会看到一个名为“serverError.js”的文件 - 它与您的 500 状态代码响应相匹配。

https://github.com/balderdashy/sails/blob/master/lib/hooks/responses/defaults/serverError.js

在这个文件(对我来说最新版本的 Sails.js 的第 35 行)中有这一行:

// Log error to console
sails.log.error('Sending 500 ("Server Error") response: \n',flaverr.parseError(data) || data);

这表明有意将任何错误记录到控制台或默认情况下的文件中,这是错误记录的最佳实践。

如果您需要忽略错误,您可以编辑这些响应文件以删除默认的控制台日志记录,将您的日志级别更改为忽略错误(不推荐),或者您尝试拦截它们并以您自己的方式优雅地处理它们,可以在这个地方看到这样做的方法:

https://sailsjs.com/documentation/concepts/models-and-orm/errors#?negotiating-errors-with-await

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。