Получение массива из обещания - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть экспресс-приложение, в котором есть функция, в которой я хочу вернуть обещание и вернуть его из конечной точки.

Вот моя функция, в которой я возвращаю обещание.

Моя конечная точка экспресса:

app.get('/logs', (req, res) =>{
    const logs = socketNotification.fetchFiles();

});

и тогда у меня есть функция, в которой я возвращаю обещание.

const fetchFiles = () => {
    return logs.then( file => {
        const lines = file.lines;
        lines.splice(-1);
        const JSONlogs = lines.map(line => {
            return({
                log: JSON.parse(line)
            });
        });
    })
}


module.exports = {
    fetchFiles
}

прямо сейчас я просто возвращаю объект JSONlogs который хранится внутри функции. Есть ли способ просто извлечь объект из функции. Я пытался с async/await, но я не был уверен в размещении ключевых слов.

Ответы [ 2 ]

1 голос
/ 30 сентября 2019

Пожалуйста, просмотрите следующий пересмотренный фрагмент кода, чтобы следовать скелету:

async function fetchFiles(params) {
    const file = await logs();
    const lines = file.lines
    lines.splice(-1)
    const JSONlogs = lines.map(line => {
        return ({
            log: JSON.parse(line)
        })
    });
    return JSONlogs;
}

app.get('/logs', async (req, res) =>{
    const logs = await socketNotification.fetchFiles()

})

Первый шаг - сделать маршрут асинхронным. Затем сделайте fetchFiles асинхронным. Функция журнала также должна быть асинхронной. Вот краткое руководство, описывающее функциональность более подробно. ссылка

0 голосов
/ 30 сентября 2019

Возможно, вы сможете вернуть экспресс-ответ со следующим с async / await

, если вы хотите использовать ключевое слово await, вы должны добавить ключевое слово async перед этой функцией

app.get('/logs', async (req, res) =>{
    const logs = await socketNotification.fetchFiles()

    return res.status(200).json(logs);
});

Непонятно, что logs выполняет в вашей функции

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