【发布时间】:2019-05-23 00:50:34
【问题描述】:
我正在尝试构建一个需要两个数据库调用的响应。目前我在使用 Node.js 的 async/await 功能时遇到问题。
这是调用类:
router.get('/:id/mailings', async (req, res) => {
try {
const pool = await poolPromise;
let id = req.params.id;
const mailings = await getMailings(pool, id);
const subjectLines = await getSubjectLines(pool, id);
mailings['subjects'] = await subjectLines;
await res.json(mailings)
} catch (err) {
res.status(500)
res.send(err.message)
}
})
下面是两个函数调用:
async function getMailings(pool, campaignId) {
const result = await pool.request()
.query(`
SELECT [CampaignId] AS campaignId
,[MailingId] AS mailingId
,[Description] AS description
,[HtmlBody] AS htmlBody
,[Subjects] AS subjects
,[FromLines] AS fromlines
,ISNULL(ImageCount, 0) AS imageCount
,[InsertTimestamp_utc] AS insertTimestampUTC
FROM [CampaignHTMLmessage] WHERE [CampaignId] =` + campaignId);
return result.recordset;
}
async function getSubjectLines(pool, campaignId) {
const result = await pool.request()
// .input('input_parameter', sql.Int, req.query.input_parameter)
.query(`
SELECT
[SubjectLine] as subjectLine
FROM CampaignSubjectLines WHERE campaignid =` + campaignId);
return result.recordset;
}
响应是一个空数组,假设响应是在数据库请求完成之前发送的。
【问题讨论】:
标签: node.js asynchronous async-await