我正在尝试为猫鼬对象编写自定义vaildator。我们的想法是name
字段必须是不同集合中预先存在的对象的名称值。我这样做是这样的:
var seshSchema = new Schema(
{
student:
{
type: String,
validate: [
function(input)
{
studentColl.find({name: input},function(err, result){
if(err)
{
throw err;
}
return result.length > 0; //how do I make this get returned by the function in vaildate's array?
});
}, "nope"]
},
tutor: {type: String},
blockTimes: [blockTime],
record : [pastSession]
}
);
我要做的是根据不同集合(studentColl)中是否存在某些标准来验证此作品。这可能吗?
答案 0 :(得分:0)
也许这就是你要找的东西:Mongoose Validation
他们描述了异步验证器here的用法。
根据此文档,您的代码应如下所示:
var seshSchema = new Schema({
student: {
type: String,
validate: {
validator: function(v, cb) {
setTimeout(function() {
studentColl.find({ name: v }, function(err, result) {
if (err) {
cb(false);
} else {
cb(result.length > 0);
}
});
}, 1);
}
}
},
...
});