Вернуть функцию asyn c в маршрутизатор express - PullRequest
1 голос
/ 06 мая 2020

Это может показаться глупым. Но я застрял здесь с

1: возврат преобразованного JSON файла
2: получение возвращенного объекта в маршрут

маршруты. js

const express = require('express');
const router = express.Router();
const routings = require('./src/services/routings');

router.get('/routings', async(req, res) => {
    const routesRes = await routings.getRoutings();
    res.end(JSON.stringify(routesRes, null, " ")).catch(function (err) {
        console.log(err);
    });
});

module.exports = router;

маршрутов. js

const parseXml = require('xml2js')

let data = `<?xml version="1.0" encoding="UTF-8"?>...'

getRoutings = async() => {
    await parseXml.parseStringPromise(data).then(function (result) {
        console.log('Done');
        return result;
    })
    .catch(function (err) {
        console.log(err);
    });
}

module.exports = {getRoutings}

1 Ответ

0 голосов
/ 06 мая 2020

Ваша getRoutings() функция не имеет возвращаемого значения. Поэтому, когда вы это сделаете:

const routesRes = await routings.getRoutings();

routesRes всегда будет undefined.

Я бы предложил следующее:

getRoutings = () => {
    return parseXml.parseStringPromise(data).then(function (result) {
        console.log('Done');
        return result;
    }).catch(function (err) {
        console.log(err);
        throw err;          // make sure error is propagated
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...