Sails.js Production Environment不会在badRequest上返回JSON响应,但是dev环境会返回

mor*_*utt 5 node.js sails.js

如标题中所述,我的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,或者创建一些客户端处理,其中对错误请求的描述性较少.