2016-01-03 13 views
5

Node.js'yi öğrenmeye başladım ve biraz kafa karıştırıcı olan bir şey Schema onaylaması.Mongoose Schema'yı doğrulamak ve özel hata mesajı görüntülemek için en iyi uygulama

Verileri doğrulamak ve kullanıcıya özel hata iletisi görüntülemek için en iyi uygulama hangisi olurdu?

Şimdi bu basit Şeması var diyelim:

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

benim Şema unique: true ekledik böylece benzersiz e-postalar ile kayıtlı kullanıcımız var istiyorum. Onun kayıtlı değil neden diyor kullanıcıya hata mesajı görüntülemek istiyorsanız Şimdi, böyle tepki şey alacağı:

"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 
    } 

Bu, tüm biraz dağınık ve ben istemciye göndermek göstermek istiyorsanız sadece böyle bir şey:

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

Bunu nasıl gerçekleştirebilirim?

+0

11000'in 'code' değerini kapatın ve ardından ayrıntıları almak için' errmsg' değerini ayrıştırın. İstediğin kadar temiz değilsin, ama işte böyle yapıyorsun. – JohnnyHK

cevap

0

Fongoose'daki benzersiz kısıtlama için hata mesajlarıyla uğraşmanın en kolay yolu, mongoose-beautiful-unique-validation gibi bir eklentiyi kullanmaktır. Hata mesajlarının sıradan doğrulama hata mesajları gibi görünmesini sağlar.