问题描述
我在节点中有一个代码 - 像这样的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