我正在模型上编写生命周期方法,在保存新记录之前检查用户是否存在。如果用户不存在,我希望服务器响应400 Bad Request代码。默认情况下,sails.js总是要发回500.我怎样才能让它发送我想要的代码?
这是我目前的尝试:
beforeCreate: function(comment, next) {
utils.userExists(comment.user).then(function(userExists) {
if (userExists === false) {
var err = new Error('Failed to locate the user when creating a new comment.');
err.status = 400; // Bad Request
return next(err);
}
return next();
});
},
但是,此代码不起作用。当用户不存在时,服务器总是发送500。有什么想法吗?
答案 0 :(得分:3)
您不希望在生命周期回调中执行此操作。相反,当您要进行更新时,您可以检查模型,并且可以访问 res 对象...例如:
User.find({name: theName}).exec(function(err, foundUser) {
if (err) return res.negotiate(err);
if (!foundUser) {
return res.badRequest('Failed to locate the user when creating a new comment.');
}
// respond with the success
});
这也可能会转移到政策中。
答案 1 :(得分:3)
您正尝试将http响应代码附加到与模型相关的错误。你的模型不知道http响应是什么(它永远不会知道)。
您可以在控制器中处理此错误,以在响应中设置相应的http代码。