У меня возникли проблемы с получением данных из различных моделей в MongoDB, чтобы проиллюстрировать это лучше, чтобы дать пример:Извлечение данных из разных моделей в MongoDB
Модель A: имеет идентификатор, название, описание
Модель B: имеет id, model_A_id, slug, фотографии
То, что я пытаюсь сделать, - это получить 3 последних записей из модели B и их соответствующие связанные данные из модели A из файла модели B, вот пример того, что я пытался кодировать
modelB.getLatest = function(limit){
\t var results = q.defer();
\t var limit = parseInt(limit) || 3;
\t var resultsArr = [];
\t modelB.find(function(err, modelB_Records) {
\t \t if (err){
\t \t \t results.reject(err);
\t \t }
\t \t
\t \t if (modelB_Records) {
\t \t \t return modelB_Records;
\t \t }
\t }).sort({'date': -1}).limit(limit).then(function(modelB_Records) {
\t \t modelB_Records.forEach(function(record) {
\t \t \t modelA.findById(modelB.model_A_id).then(function(modelA_Record) {
\t \t \t \t var resultsObj = { modelB_data: record, modelA_data: modelA_Record};
\t \t \t \t resultsArr.push(resultsObj);
\t \t \t });
\t \t });
\t \t results.resolve(resultsArr);
\t });
\t return results.promise;
}
я, вероятно, далеко отсюда, но я надеюсь, мой вопрос может привести к ответам, чтобы получить меня на правильном пути, спасибо за помощь!
Вот образец модели схемы тоже:
var modelA= new mongoose.Schema({
\t _id: Number,
\t name: String,
developer: String,
floors: Number,
completionYear: Number
});
var modelB= new mongoose.Schema({
\t userId: String,
\t buildingId: Number,
\t date: String,
\t title: String,
\t description: String,
\t comments: [],
\t rating: []
});
Вы уже проверили из [заполнить] (http://mongoosejs.com/docs/populate.html) от мангуста? –
Я вижу, что вам не хватает '.exec()' сразу после '.limit (limit)'. Можете ли вы также добавить некоторые примеры документов из базы данных и ожидаемых данных? –
добавлено @ThomasBormans – therayess