繁体   English   中英

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

[英]Mongoose/MongoDb ,how to validate an array of Ids against another model

我有2个Moongose模式:

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元素是否由发送表单的同一用户拥有

您可以尝试使用验证函数或简单的“保存”中间件:

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属性是否确实存在于其他(用户)集合中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM