Я пишу приложение 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 с вызовом функции.
Спасибо большое!