2014-10-16 3 views
0

Надеюсь, что заголовок описывает мой вопрос правильно.Nodejs Mongoose визуализируют две модели из коллекций

Когда я открываю/admin/liste, он должен отображать две таблицы из базы данных MongoDB. Как я могу отобразить две или несколько коллекций?

app.get('/admin/liste', isLoggedIn, function(req, res) { 
    var List1 = mongoose.model('List1'); 
    // var List2 = mongoose.model('List2'); 

    List1.find(function (err, docs) { 
     res.render('admin/liste',{ 
      firstlist : docs 
     }); 
    }); 

    /*List2.find(function (err, docs) { 
     res.render('admin/liste',{ 
      seclist : docs 
     }); 
    });*/ 
}); 

EDIT: Я не могу найти информацию по моей проблеме в ссылке, что этот вопрос является дубликатом. Я не использую никаких Joins или что-то в этом роде. Я хочу отобразить две таблицы из элементов, которые находятся в List1 и List2. Код без комментирования работает хорошо, но это только одна таблица, поэтому мне нужно объединить эти два, а затем отобразить страницу.

Надеюсь, что кто-нибудь может мне помочь, спасибо.

ответ

1

Спасибо за ваш ответ. Между тем я нашел другое решение для своей проблемы:

app.get('/admin/liste', isLoggedIn, function(req, res) { 
    var List1 = mongoose.model('List1'); 
    var List2 = mongoose.model('List2'); 

    var List1Objects = List1.find({}); 
    var List2Objects = List2.find({}); 
    var resources = { 
     firstlist: List1Objects.exec.bind(List1Objects), 
     seclist: List2Objects.exec.bind(List2Objects) 
    }; 

    async.parallel(resources, function (error, results){ 
     if (error) { 
      res.status(500).send(error); 
      return; 
     } 
     res.render('admin/liste', results); 
    }); 
}); 
1

Вы можете сделать это, выполнив второй запрос в функции обратного вызова первого запроса так, что оба результата доступны для res.render вызова:

app.get('/admin/liste', isLoggedIn, function(req, res) { 
    var List1 = mongoose.model('List1'); 
    var List2 = mongoose.model('List2'); 

    List1.find(function (err, docs1) { 
     List2.find(function (err, docs2) { 
      res.render('admin/liste', { 
       firstlist : docs1 
       seclist : docs2 
      }); 
     }); 
    }); 
}); 
Смежные вопросы