sails.js:手动调用404

时间:2014-02-02 20:02:00

标签: javascript node.js sails.js http-status-code-404

我正在寻找一种方法来使用sails.js框架提供的默认404错误。

文档在这里http://sailsjs.org/#!documentation/config.404,但我想知道如何从另一个控制器调用404方法。

当然我可以使用doc中的代码,但我更愿意使用专用的框架方法。

2 个答案:

答案 0 :(得分:10)

res.notFound()应该为版本0.10做技巧。

查看您的api/responses/文件夹,它包含sails的默认错误响应帮助程序,并允许您通过在那里保存文件来提出自己的响应类型。

默认包含:

/api/responses
    badRequest.js  - 400 - res.badRequest()
    notFound.js    - 404 - res.notFound()
    forbidden.js   - 403 - res.forbidden()
    serverError.js - 500 - res.serverError()

滚动自己:

/api/responses
   notAcceptable.js - res.notAcceptable();

示例(修改后的api / responses / notFound.js):

module.exports = function notAcceptable() {
    var req = this.req;
    var res = this.res;

    var viewFilePath = 405;
    var statusCode = 405;

    var result = {
      status: statusCode
    };

    if (req.wantsJSON) {
        return res.json(result, result.status);
    }
    res.status(result.status);
    res.render(viewFilePath, function(err) {
        if (err) {
            return res.json(result, result.status);
        }

        res.render(viewFilePath);
    });
};

答案 1 :(得分:1)

文档中描述的pageNotFound方法只是404响应行为的默认实现,是sails配置的一部分。您可以在 config / 404.js 文件中看到它。 如果你想从控制器中调用它,你可以像引用任何其他sails配置变量一样引用它:

yourControllerAction: function(req, res) {
  ......
  // if  content not found, calling 404 method
  sails.config[404](req, res);
  // else
  res.send('Some content');
},