[英]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.