mongoose:在db中搜索字段的模式的vaildate部分

时间:2016-10-18 02:19:58

标签: node.js mongodb asynchronous mongoose schema

我正在尝试为猫鼬对象编写自定义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)中是否存在某些标准来验证此作品。这可能吗?

1 个答案:

答案 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);
            }
        }
    },
    ...
});