Mongodb как получить доступ к текущему элементу схемы - PullRequest
0 голосов
/ 16 октября 2018

Я не совсем уверен, как это сформулировать, так что, надеюсь, мой пример имеет смысл (это все в моей person.js модели). Скажем, у меня есть эта person схема (просто пример для этого вопроса).contact person человека ДОЛЖЕН быть в списке этого человека relatives.Элемент POST будет выглядеть следующим образом:

{
     name: "Frank",
     contact_person: "Jene",
     relatives: ["Jene", "Pete", "Harry"]
}

И скажем, что мы обновляем это person с помощью PUT, как это:

{
     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 относится к телу входящего запроса,Но в приведенном выше примере 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();
});
...