我在nodejs中使用async / await是新手,并且对于如何返回我想在视图中使用的数据感到困惑。这是我的代码。下面是homeController,使用如下:
app.get("/", homeController.index);
我尝试将index
方法设为异步,但我仍然无法控制新闻数据。什么是解决文章信息的正确方法,以便在home
的视图中可供使用?
async function getNewsData() {
const pool = await connection;
const result = await pool.request()
.input("StoryID", sql.Int, 154147)
.execute("News.uspStoryByIdGet");
console.log(result, "the result from the stored procedure");
return result;
}
const article = getNewsData().
catch((e) => {
console.log("the error", e);
});
export let index = async(req: Request, res: Response) => {
const article = await getNewsData();
console.log(article, "yoo");
res.render("home", {
article,
title: "Home",
});
};
答案 0 :(得分:0)
return
函数调用getNewsData()
没有值Why is value undefined at .then() chained to Promise? lookahead and a lookbehind return row
如果getNewsData()
调用的预期结果,您可以getNewsData()
rows
是Launch Program
数组。
答案 1 :(得分:0)
我可以看到你应该await
connection
getNewsData
connection
除非由于某种原因result
是一个正在或正在等待的承诺待解决。
您还应该在getNewsData
函数上返回async/await
。
如果这不是造成问题的原因,那么这里有一些关于Promise
1 - 调用异步函数的行为类似于调用返回await
的函数
2 - 当你使用then
时,它的行为就像你等待一个承诺被解决并从中提取结果一样,你将在你的范围内拥有它而不是传递给{{1}中的回调函数}或catch
方法。