マングースのバリデータはモデルのレベルで開始するには絶好の場所ですが、あなたは、コントローラ固有の検証を持っている必要があれば、私はutils.jsファイルに次のコードを使用します。
var async = require('async')
exports.validator = function (reqProps, props, mongoEnt, next) {
var propsErr = [];
var mongoErr = {};
async.parallel([function (cb) {
reqProps.forEach(function (rp) {
if (!props[rp])propsErr.push(rp);
})
cb()
}, function (cb) {
if (mongoEnt != null) {
var test = new mongoEnt(props);
test.validate(function (err) {
mongoErr = err;
cb();
});
} else {
mongoErr = null;
cb();
}
}], function (err, result) {
if (propsErr.length != 0) {
return next(new Error('The following props were not included: ' + propsErr));
} else if(mongoErr != null) {
return next(new Error('The following prop was not included: ' +mongoErr.errors[Object.keys(mongoErr.errors).pop()].path));
} else {
return next(null);
}
})
}
これは私のことができますmongooseバリデーターを使用して検証し、reqPropsプロパティーにコードの1行に含める追加の小道具を確認してください。これは必須プロパティのチェックだけですが、独自の検証スキームで簡単に拡張できます。
このコードの使用の例:
var Person = mongoose.model('Person')
exports.addUSCitizen = function(props, next){
utils.validator(['ssn'], props, Person, function (err) {
if(err) return next(err);
//do something using props.ssn
})
}