feathersjs:如何将无主见的错误传递回客户端



似乎错误消息被包装在文本中。 假设在模型验证中,如果记录已经存在,我只想向客户端发送"存在"。

一个服务器也许我做这样的事情:

validate: {
        isEmail: true,
        isUnique: function (email, done) {
          console.log("checking to see if %s exists", email);
          user.findOne({ where: { email: email }})
            .then(function (user) {
                done(new Error("exists"));
            },function(err) {
                console.error(err);
                done(new Error('ERROR: see server log for details'));
              }
            );
        }
      }

在客户端上,也许我会:

feathers.service('users').create({
      email: email,
      password: password
    })
      .then(function() {
        console.log("created");
      })
      .catch(function(error){
        console.error('Error Creating User!');
        console.log(error);
      });

打印到控制台的错误是:

"错误: 验证错误: 存在">

我如何在没有额外文本的情况下只发送"存在"一词? 真的我想发回一个自定义对象,但我似乎找不到任何这样做的例子。 我见过的最接近的是:https://docs.feathersjs.com/middleware/error-handling.html#featherserror-api

但是我还没有弄清楚如何在验证器中使这样的事情工作。

> Feathers不会更改任何错误消息,因此Validation error:前缀可能是由猫鼬添加的。

如果你想改变消息或发送一个全新的错误对象,从羽毛钩子 v1.6.0 开始,你可以使用错误钩子:

const errors = require('feathers-errors');
app.service('myservice').hooks({
  error(hook) {
    const { error } = hook;
    if(error.message.indexOf('Validation error:') !== -1) {
      hook.error = new errors.BadRequest('Something is wrong');
    }
  }
});

您可以在此处阅读有关错误和应用程序挂钩的更多信息

相关内容

  • 没有找到相关文章

最新更新