2016-01-03 13 views
5

Ho iniziato a imparare Node.js e una cosa che mi confonde un po 'è la convalida dello schema.Procedura consigliata per convalidare lo schema Mongoose e visualizzare il messaggio di errore personalizzato

Quale sarebbe la procedura migliore per convalidare i dati e visualizzare un messaggio di errore personalizzato per l'utente?

Diciamo che abbiamo questo semplice schema:

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

Vorrei avere gli utenti registrati con email unici così ho aggiunto unique: true al mio schema. Ora, se voglio visualizzare il messaggio di errore per l'utente che dice perché non è registrata, avrei ricevuto risposta o meno così:

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

Questo è tutto un po 'disordinato e mi piacerebbe visualizzare da inviare al cliente laterale appena qualcosa di simile:

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

Come ottenere questo risultato?

+0

Cancellare il valore 'code' di 11000 e quindi analizzare il valore' errmsg' per ottenere i dettagli. Non è pulito come vorresti, ma è così che lo fai. – JohnnyHK

risposta

0

Il modo più semplice per gestire i messaggi di errore per il vincolo univoco in mangusta è utilizzare un plug-in come mongoose-beautiful-unique-validation. Rende i messaggi di errore come normali messaggi di errore di convalida.