Доброго всем времени суток!
Изучаю Node.JS, для первого проекта выбрал связку Express + Mongoose, и уже столкнулся с рядом проблем.
Есть 2 модели:
var Institution = new mongoose.Schema({
name: {
type: String,
required: [true, 'Поле "Название заведения" не может быть пустым']
}
});
module.exports = mongoose.model('institution', Institution);
var Faculty = new mongoose.Schema({
institution: {
type: mongoose.Schema.ObjectId,
ref: 'institution'
},
name: {
type: String,
required: [true, 'Поле "Название факультета" не может быть пустым']
}
});
module.exports = mongoose.model('faculty', Faculty);
Чтобы получить все факультеты, которые принадлежат учебному заведению, делаю так:
Faculty.find({institution: institution._id}, function(err, faculties) {
// ...
});
Но теперь мне нужно вывести список учебных заведений, а напротив их количество факультетов.
Может кто подскажет как лучше сделать?
Пока такие мысли:
1. Завести поле __facultiesCount в схеме Institution и при добавлении нового факультета увеличивать это поле, а при удалении уменьшать на 1, но так получается некрасиво и много лишнего кода :) + данные могут быть не актуальны, если например я в БД руками удалю один факультет.
2. После выборки списка учебных заведений - проходить по ним и для каждого считать сколько факультетов каждый раз - но это не оптимально.
Может есть какой-то способ полегче?