Как извлечь значения из обещания и отправить их клиенту через сервер node.js? - PullRequest
1 голос
/ 20 февраля 2020

У меня есть обещание, которое возвращает данные, и я хочу передать значения обещания как ответ клиенту (веб-браузер). Я знаю, что, вероятно, я должен использовать асинхронный js, но я не уверен, как это сделать. Не могли бы вы дать мне совет?

Вот как это выглядит:

if(req.url === "/api/posts"){
    res.writeHead(200, {"Content-Type": "application/json"})
    let db = new AppDAO('./db/db.sqlite3') 
    const postsDb = new PostsRepository(db)
    let posts = postsDb.getAll() 
    db.close()
    console.log(posts)
    res.end()
}

1 Ответ

2 голосов
/ 20 февраля 2020

Вам нужно построить ответ, когда БД Promise разрешает

postsDb.getAll().then(posts => {
    console.log(posts)
    res.send(posts)
}).finally(() => db.close())

Или если вы хотите использовать современный синтаксис и можете объявить окружающую функцию как async:

try {
    const posts = await postsDb.getAll()
    console.log(posts)
    res.send(posts)
} catch(e) {
    // Handle database error
} finally {
    db.close()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...