2016-01-03 8 views
5

私はNode.jsの学習を始めましたが、少し混乱させるものは、スキーマの検証です。Mongooseスキーマを検証し、カスタムエラーメッセージを表示するベストプラクティス

データを検証し、カスタムエラーメッセージをユーザーに表示するにはどうすればよいでしょうか?私は自分のスキーマにunique: trueを追加しましたので、私はユニークな電子メールをユーザーに登録しているしたいと思います

var mongoose = require("mongoose"); 

// create instance of Schema 
var Schema = mongoose.Schema; 

// create schema 
var Schema = { 
    "email" : { type: String, unique: true }, 
    "password" : String, 
    "created_at" : Date, 
    "updated_at" : Date 
}; 

// Create model if it doesn't exist. 
module.exports = mongoose.model('User', Schema); 

は、我々はこの単純なスキーマを持っているとしましょう。私は彼が登録されていない理由を述べているユーザーにエラーメッセージを表示したい場合は今、私はこのような応答何か受け取るだろう:

"code": 11000, 
    "index": 0, 
    "errmsg": "E11000 duplicate key error index: my_db.users.$email_1 dup key: { : \"[email protected]\" }", 
    "op": { 
     "password": "xxx", 
     "email": "[email protected]", 
     "_id": "56895e48c978d4a10f35666a", 
     "__v": 0 
    } 

これは、すべての少し厄介ですが、私はクライアントに送信する表示したいです次のようなものです:

"status": { 
    "text": "Email [email protected] is already taken.", 
    "code": 400 
} 

これを行う方法は?

+0

'code'値11000をキーオフして、' errmsg'値を解析して詳細を取得します。あなたが望むほど清潔ではありませんが、それはあなたのやり方です。 – JohnnyHK

答えて

0

mongooseのユニーク制約のエラーメッセージを処理する最も簡単な方法は、mongoose-beautiful-unique-validationのようなプラグインを使用することです。これは、エラーメッセージを通常の検証エラーメッセージのように見せます。

関連する問題