Как получить данные из нескольких HTTP-запросов в одном рендере ejs - PullRequest
0 голосов
/ 26 мая 2019

Я пишу приложение Node, которое опирается на две базы данных Mongoose X и Y, так что объектная модель для Y имеет массив X объектов.

Я хочу создать файл ejs, чтобы пользователь мог добавить экземпляр X к экземпляру Y, который будет обрабатываться промежуточным программным обеспечением (контроллерами).

Я не совсем понимаю, как получить необходимые данные из обоих источников (т. Е. Всех объектов X в схеме X и всех объектов Y в схеме Y) в одном рендеринге EJS, так что пользователь может выбрать X для добавления в Y.

Функции моего контроллера следующие:

exports.get_all_[X or Y] = function(req, res) {
   [X or Y].find({}, function(err, [X or Y]) { ...

Мои маршруты следующие:

router.get('/getAllX', XController.get_all_X);
router.get('/getAllY', YController.get_all_Y);

В моем файле EJS я хочу получить все экземпляры X и все экземпляры Y, вызвав эти два запроса, но я не уверен, как, если только один запрос HTTP отображает EJS.

Есть ли способ получить данные из обоих источников, а затем вызвать, например:

res.render('ejs', {dataX: dataX, dataY: dataY});

Дополнительный вопрос: скажем, у меня есть функция, которая в конечном итоге будет отображать файл EJS, например:

exports.get_all_Y = function(req, res) {

    ...

  } else {
      res.render('example_ejs', {data: data});
  }

Если я хочу использовать / вызывать эту функцию для использования в нескольких файлах EJS, как бы я это сделал? Моя интуиция заключается в том, что я бы изменил res.render на res.send и не включал бы один конкретный файл ejs для рендеринга в функции, но тогда я не уверен, где / когда 1) я бы рендерил файлы ejs и 2) как бы я связать рендеринг файла ejs с вызовом функции.

Спасибо большое!

...