我不太确定该如何措辞,因此希望我的示例有意义(这全部在我的person.js
模型中)说我有这个person
模式(仅是此问题的一个示例)。该人的contact person
必须在该人的relatives
列表中。 POST项目看起来像这样:
{
name: "Frank",
contact_person: "Jene",
relatives: ["Jene", "Pete", "Harry"]
}
并说我们用这样的PUT更新此person
:
{
id: (whatever),
contact_person: "Jason"
}
这应该引发错误,因为"Jason"
不在此人的relatives
列表中。
因此,对于我的帖子,我可以通过以下方法解决此问题:
personSchema.pre('save', function(next) {
if (!this.relatives.includes(this.contact_person)) {
return next({'error': 'Not a valid contact_person'});
}
next();
});
之所以可行,是因为this
是指传入的请求正文。但是在上面的out PUT示例中,它不会联系relatives
,因此您无法检查this.relatives
那我该如何访问当前模式项的数据,而不是传入呼叫的数据。我需要这样的东西:
personSchema.pre('save', function(next) {
thisItem = currentSchemaItem; // Something like this
if (!thisItem.relatives.includes(this.contact_person)) {
return next({'error': 'Not a valid contact_person'});
}
next();
});