退出自定义帆1和动作2

时间:2018-06-26 16:43:41

标签: node.js sails.js

如果我想使用动作2在帆1中返回带有状态代码和错误消息的错误输出,怎么办?

EX:

...

  exits: {
    notFound: {
      description: 'not found',
      responseType: 'notFound'
    }

...

如何退出?例如: 状态代码为403和消息“不允许”

1 个答案:

答案 0 :(得分:1)

编辑:我尝试过幼稚的方法,并且有效!您可以将非成功退出作为函数返回,并传递json作为参数。示例代码:

return exits.notfound({
    error: true,
    message: 'The *thing* could not be found in the database.'
});

原始答案:

您可以从操作2访问响应对象,并在其中放置错误代码和消息。

在退出时,只需设置所需的statusCode即可,而在操作本身中,可以在抛出该异常之前根据特定的退出情况相应地修改res。

...

exits: {
    notFound: {
      statusCode: 403,
      description: 'not found'
    }

...

在您的行动中:

...

if(!userRecord) {
  this.res.message = 
    {
        exit: 'notFound', 
        message: 'The *thing* could not be found in the database.'
    };
  throw 'notFound';
}

...

您可以设置自定义响应来执行相同的操作。像这样将responseType放入操作2出口中:

...

exits: {
    notFound: {
      responseType: 'notfound',
      description: 'not found'
    }

...

然后在api / responses中创建您的自定义响应,并在其中设置状态代码和消息。

...

module.exports = function notfound() {
    let req = this.req;
    let res = this.res;

    sails.log.verbose('Ran custom response: res.notfound()');

    res.message = 
        {
            exit: 'notFound', 
            message: 'The *thing* could not be found in the database.'
        };
      return res.status(403);
    }

...