Mongodb如何访问当前架构项目

时间:2018-10-16 06:38:51

标签: node.js mongodb mongoose model mongoose-schema

我不太确定该如何措辞,因此希望我的示例有意义(这全部在我的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();
});

0 个答案:

没有答案