Mongoose / MongoDb,如何针对另一个模型验证ID数组

时间:2015-10-28 11:24:42

标签: javascript node.js mongodb

我有2个moongose Schema:

var Schema2 = new Schema({
    creator : { type: String, ref: 'User'},
    schema_name : [{ type: String}],
});

var Schema1 = new Schema({
    creator : { type: String, ref: 'User'},
    schema_ref : [{ type: String, ref: 'Schema2' }],
});

想知道当我创建一个新的Schema1检查时,哪个是最佳实践,检查数组schema_ref的每个元素都有相同的创建者。

因为schema1元素是由客户端表单添加的,所以我必须检查schema_ref元素是否由发送表单的同一用户拥有

1 个答案:

答案 0 :(得分:0)

您可以尝试使用验证器功能,也可以使用简单的“保存”功能。中间件:

Schema1.pre('save', function(next) {
    let owner;
    for (let entry in this.schema_ref) {
        if (!owner) {
            owner = entry;
        } else {
            if (entry !== owner) {
                return next(new Error("owner mismatch");
            }
        }
    }
});

此外,您的架构可能无法按预期工作,看起来您确实需要:

schema_ref: [{
    type: {type: String},
    ref: "User"
}]

另外,看一下id-validator插件,或类似的插件 - 除了验证之外,它还会检查所有这样的ref-type属性是否实际存在于其他(Users)集合中。 / p>