如标题中所述,我的sails app对特定路由/控制器函数的GET请求在开发环境中返回带有JSON的badRequest,但不在prod环境中返回.为什么是这样?
这是控制器功能:
index: function(req, res) {
async.auto({
companies: function(cb) {
User.findOneById(req.session.user.id)
.populate('companies')
.exec(function(err, user)
{
if(err) {
var badRequestData = { error: err };
return cb(badRequestData, null);
} else if(user.companies.length == 0) {
var badRequestData = { error: "This user has no associated companies." };
return cb(badRequestData, null);
}
cb(null, user.companies)
});
},
validateForNullCompanies: ['companies', function(cb, results) {
var nullCompanies = _.where(results.companies, { stripeAccountId: null });
if(nullCompanies.length > 0) {
var badRequestData = { error: "This user needs to authenticate stripe with their company." };
return cb(badRequestData, null);
} else {
return cb();
}
}]
}, function(err, results) {
if (err) {
return res.badRequest(err);
}
return res.ok();
});
},
Run Code Online (Sandbox Code Playgroud)
小智 7
刚碰到这个,
如果你看一下http://sailsjs.org/documentation/reference/response-res/res-bad-request中的注释,它说
默认情况下,如果应用程序在"生产"环境中运行(即process.env.NODE_ENV ==='production'),则将排除指定的错误(错误).
看看api/responses/badRequest.js我们可以看到以下代码:
// Only include errors in response if application environment
// is not set to 'production'. In production, we shouldn't
// send back any identifying information about errors.
if (sails.config.environment === 'production') {
data = undefined;
}
Run Code Online (Sandbox Code Playgroud)
因此,如果您对此进行评论,我相信您会在生产中获得所需的结果.同时,它似乎在这里是有原因的,所以可能发回自定义错误代码,res.send([statusCode], body)其中body是您的JSON,或者创建一些客户端处理,其中对错误请求的描述性较少.
| 归档时间: |
|
| 查看次数: |
1121 次 |
| 最近记录: |