Mon goose виртуальное поле, которое суммирует виртуальное поле в связанной схеме - PullRequest
0 голосов
/ 22 марта 2020

У меня есть отношение mongodb «один ко многим» со схемой mon goose, которая должна суммировать некоторые итоги по основным документам / схеме, выбранным пользователем.

«Верхний уровень» Схема выглядит следующим образом ...

const programmeSchema = new mongoose.Schema({
name: {
    type: String
},
projects:
    [{ type: mongoose.Schema.ObjectId, ref: 'Project' }],
...
})

, которая возвращает правильные документы 'проекта', и все это просто ужасно. С виртуальным полем я пытаюсь сделать свою сумму ....

programmeSchema.virtual('totalProgramme').get(function () {
let totalProgramme = 0
this.projects.forEach(function (el) {
    totalProgramme = totalProgramme + el.total
})
return totalProgramme
})

Попытка суммировать цифры из документов «проекта» с этим виртуальным полем не работает. Если я это утешу, это просто идентификатор, к которому у меня есть доступ. Я не уверен, что это потому, что мне нужно где-то заполнить документы или потому что невозможно создать виртуальное поле, которое суммирует виртуальное поле из другой схемы (или, скорее, это возможно, но я не знаю, как ).

Я мог бы просто сделать это в моем внешнем интерфейсе, но это кажется плохой практикой. Я хочу, чтобы эта схема «верхнего уровня» была как можно более простой, и просто извлекаю информацию из отображаемых документов и выполняю некоторые сводные данные по нескольким полям.

...