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

У меня есть промежуточное ПО, которое загружает некоторые данные JSON из REST API.

loadDataStartup.js

'use strict';

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

async function loadData () {
    console.log("*** loadData() called");
    var equipmentCategoryArr = await db_contants.getEquipmentCategory();
    return equipmentCategoryArr;
}

module.exports = {loadData};

В моем app.js мне нужно установить данные для приложения- переменная -уровня app.set, чтобы впоследствии ее могли использовать другие маршрутизаторы.

app.js

const { loadData } = require('./db/loadDataStartup');
var app = express();
app.set('dataOnStartup', async loadData());

Когда я запустил npm start, он выдал следующую ошибку:

app.set('dataOnStartup', async loadData());
                         ^^^^^

SyntaxError: missing ) after argument list

Я с node.js версии 8.11.3.

1 Ответ

0 голосов
/ 15 октября 2018

Прежде всего, вы делаете не async callAsyncFn(), а await callAsyncFn().Так что async loadData() это синтаксическая ошибка.То, что вы, вероятно, хотели сделать, было await loadData().Но вы также не можете сделать это в файле приложения начального уровня, потому что этот оператор не находится в функции async (вы можете только await внутри async функций).

В качестве обходного пути можно использовать async IIFE (выражение функции с немедленным вызовом), например:

const { loadData } = require("./db/loadDataStartup");
var app = express();

(async function() {
    app.set("dataOnStartup", await loadData());
    // The rest of your app startup logic
})();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...