Express JS - асинхронная загрузка данных из конечной точки REST при веб-вызове при запуске приложения - PullRequest
0 голосов
/ 15 октября 2018

У меня есть промежуточное программное обеспечение с именем loadDataStartup.js, которое имеет функцию loadData, которая вызывает конечную точку REST для получения некоторых данных JSON.

. / Db / loadDataStartup.js

'use strict';

const db_contants = require('./db_contants');

function loadData () {
    console.log("*** loadData() called");
    db_contants.getEquipmentCategory()
    .then(function(result_ec) {
        if (typeof result_ec === "object") {
            var equipmentCategoryArr = result_ec["results"];
            console.log("*** equipmentCategoryArr:" + equipmentCategoryArr);
            return db_contants.getLifeExpectancy();
        }
        else
            return JSON.stringify({ "Error": String(result_ec) });      
    }).catch((err) => {
        return JSON.stringify(err);
    })
}

module.exports = {loadData};

Inмой app.js, я хочу установить загруженные данные в переменную уровня приложения с именем "dataOnStartup" с помощью app.set.Таким образом, впоследствии переменная может быть извлечена с помощью app.get в круге req-res.

app.js

const { loadData } = require('./db/loadDataStartup');
app.set('dataOnStartup', loadData());
app.use(function(req,res,next){
  console.log("*** dataOnStartup:" + app.get('dataOnStartup'));
  res.locals.session = req.session;
  next();
});

Однако каждый раз, когда запрос отправлялся, консоль печатала *** dataOnStartup:undefined.Я предполагаю, что это была асинхронная вещь, которая вызвала проблему.Но как я могу это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...