Я пытаюсь создать ответ, в котором требуется два вызова базы данных. В настоящее время у меня возникают проблемы с функцией асинхронной / ожидающей работы Node.js.
Вот класс вызова:
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;
}
Ответ является пустым массивом, при условии, что ответ отправлен до завершения запросов к базе данных.