2017-02-06 2 views
0

エラーメッセージがテキストで囲まれているようです。モデルの検証では、レコードがすでに存在する場合にクライアントに「存在する」だけを送信したいと思う。feathersjs:クライアントに耳にしていないエラーを返すにはどうすればいいですか?

1つのサーバーは、多分私のような何かを実行します。クライアントで

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); 
     }); 

エラーは次のとおりです。

"Error: Validation error: exists"

どのように私はちょうど余分なテキストなしで "存在する"という言葉を送る?本当に私はカスタムオブジェクトを返送したいと思いますが、これを行う例は見当たりません。私が見た最も近いがこれです:https://docs.feathersjs.com/middleware/error-handling.html#featherserror-api

しかし、私はバリでは、この作品のようなものを作る方法を考え出したていません。

答えて

1

フェザーはエラーメッセージを変更しないので、恐らく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'); 
    } 
    } 
}); 

あなたはエラーとアプリケーションのフックについての詳細を読むことができhere

関連する問題