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

时间:2017-02-06 23:58:55

标签: javascript 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);
      });

打印到控制台的错误是:

  

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

如何发送单词" exists"没有额外的文字?我真的想寄回一个自定义对象,但我似乎无法找到任何这样做的例子。我最近看到的是:https://docs.feathersjs.com/middleware/error-handling.html#featherserror-api

但我还没弄明白如何在验证器中做出类似这样的工作。

1 个答案:

答案 0 :(得分:1)

Feathers不会更改任何错误消息,因此Mongoose可能会添加Validation error:前缀。

如果你想更改消息或发送一个全新的错误对象,就像feather-hooks 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');
    }
  }
});

您可以阅读有关错误和应用程序挂钩here

的更多信息