2016-01-03 25 views
5

Zacząłem uczyć się Node.js i jedną rzecz, która jest dla mnie trochę myląca, to sprawdzanie poprawności schematu.Najlepsza praktyka sprawdzania schematu Mongoose i wyświetlania niestandardowego komunikatu o błędzie

Jaki byłby najlepszy sposób sprawdzania poprawności danych i wyświetlania niestandardowego komunikatu o błędzie użytkownikowi?

Powiedzmy mamy ten prosty schemat:

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

chciałbym mieć zarejestrowanych użytkowników z unikalnych emaili więc dodanych unique: true do mojego schematu. Teraz, jeśli chcę, aby wyświetlić komunikat o błędzie do użytkownika, który mówi, dlaczego on nie zarejestrowany, chciałbym coś otrzymać odpowiedź tak:

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

To wszystko jest trochę brudny i chciałbym, aby wyświetlić wysłać do klienta strona po prostu coś takiego:

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

Jak to zrobić?

+0

Wprowadź wartość 'code' z 11000, a następnie przeanalizuj wartość' errmsg', aby uzyskać szczegółowe informacje. Nie tak czysty, jak byś chciał, ale tak to robisz. – JohnnyHK

Odpowiedz

0

Najprostszym sposobem radzenia sobie z komunikatami o błędach dla unikalnego ograniczenia w mangurze jest użycie wtyczki, takiej jak mongoose-beautiful-unique-validation. Sprawia, że ​​komunikaty o błędach wyglądają jak zwykłe komunikaty o błędach sprawdzania poprawności.