async / await和用pug进行模板化

时间:2017-10-06 02:09:04

标签: javascript node.js asynchronous

我在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",
  });
};

2 个答案:

答案 0 :(得分:0)

return函数调用getNewsData()没有值Why is value undefined at .then() chained to Promise? lookahead and a lookbehind return row如果getNewsData()调用的预期结果,您可以getNewsData() rowsLaunch Program数组。

答案 1 :(得分:0)

我可以看到你应该await connection getNewsData connection除非由于某种原因result是一个正在或正在等待的承诺待解决。

您还应该在getNewsData函数上返回async/await

如果这不是造成问题的原因,那么这里有一些关于Promise

的澄清

1 - 调用异步函数的行为类似于调用返回await的函数 2 - 当你使用then时,它的行为就像你等待一个承诺被解决并从中提取结果一样,你将在你的范围内拥有它而不是传递给{{1}中的回调函数}或catch方法。

如果仍有疑问,请随时回复此答案。