檢出express-validator
這將允許您在您的個人路線(MVC傾向控制器)中執行驗證。
雖然上述工作,mongoose
爲您提供了很大的靈活性,並且已經預裝了驗證機制。除非您真的需要,否則重新構建此功能是沒有意義的,這樣做會在您的路線中產生大量噪音。我會考慮使用本地MongoDB驅動程序和您自己的定製邏輯進行註冊,如果您覺得其他情況 - 使用本機驅動程序並不那麼難,但是如果項目將會增長,mongoose
會爲您提供很多強大的功能,不會想要處理你自己。
雖然大多數網上在一個大文件中顯示貓鼬模型,它相對容易(並且最好)將您的模型分解成邏輯片段。這通常是我如何設置的事情:
models/
User/
index.js
statics.js
methods.js
validators.js
middleware.js
routes/
views/
裏面models/User/index.js
,它可以被要求作爲require('./models/User')
,我們創造我們的模式,並添加一些膠水代碼爲我們的文件劃分:
var mongoose = require('mongoose');
var userSchema = new mongoose.Schema({
name: String,
password: String,
role: String
});
userSchema.statics = require('./statics');
userSchema.methods = require('./methods');
// This will go through each exports in the validators file and attach
// the exported function as a validator. You're validators file should
// name each validator after the field in which it intends to validate.
// See below for example validators file.
var validators = require('./validators');
Object.keys(validators).forEach(function (validator) {
userSchema.path(validator).validate(validators[validator]);
return;
});
// Do the following for each type of middleware you use in the model
var preSave = require('./middleware').preSave;
preSave.forEach(function (middleware) {
userSchema.pre('save', middleware);
return;
});
module.exports = mongoose.model('User', userSchema);
然後我們就可以建立我們validators.js
文件看起來像:
exports['name'] = function() { /* validation code here */ };
exports['password'] = function() { /* validation code here */ };
exports['role'] = function() { /* validation code here */ };
//etc, etc, etc.
你可以把所有的這一步以滾動插件來提供這種接口你沒有所有的樣板。我還沒有走下那條路,但插件開發mongoose
是超級簡單:http://mongoosejs.com/docs/plugins.html
請記住express
不是模仿RoR或Yii。紅寶石中的Sinatra與nodejs世界以外的express
最接近。 (我相信在Sinatra之後建模是TJ開始的地方,然後這個項目在過去的幾年中一直髮展到目前的狀態)。