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