gpt4 book ai didi

node.js - Sails.js 生产环境不返回 badRequest 上的 JSON 响应,但开发环境返回

转载 作者:搜寻专家 更新时间:2023-10-31 22:38:26 26 4
gpt4 key购买 nike

如标题中所述,我的 sails 应用程序对特定路由/ Controller 函数的 GET 请求在开发环境中返回了带有 JSON 的 badRequest,但在生产环境中却没有。这是为什么?

Controller 函数如下:

    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();

});

},

最佳答案

刚好碰到这个,

如果您查看 http://sailsjs.org/documentation/reference/response-res/res-bad-request 中的注释它说

By default, the specified error (err) will be excluded if the app is running in the "production" environment (i.e. 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;
}

因此,如果您将其注释掉,我相信您会在生产中获得您想要的结果。同时,它出现在这里似乎是有原因的,所以也许可以使用 res.send([statusCode], body) 发回自定义错误代码,其中 body 是您的 JSON,或者创建一些客户端对错误请求进行较少描述性解释的侧面处理。

关于node.js - Sails.js 生产环境不返回 badRequest 上的 JSON 响应,但开发环境返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30849130/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com