{ var message = req.session.user1; -6ren">
gpt4 book ai didi

node.js - 在 req,res 中调用函数

转载 作者:行者123 更新时间:2023-12-03 22:30:52 25 4
gpt4 key购买 nike

我的 route 有以下代码片段:

router.get("/home", (req,res) =>{
var message = req.session.user1;
res.render("home", {data: message});
})
在我的 taskController.js 中,我有一个函数可以使用 Sequelize 查询数据,该函数也应该传递给 home。如何在上面的代码片段中插入函数?
我最初的想法是
 router.get("/home", (req,res) =>{
Some query here stored in var task
var message = req.session.user1;
res.render("home", {data: message, dataTwo: task});
})
但这仅适用于我在路由中执行通常的 MySql 查询的情况。但我目前正在使用 Sequelize(在我的 taskController.js 中)为我进行查询。所以我的选择是在该 Controller 中调用该函数并在上面的 router.get 中使用它,但我不太确定如何合并它。

最佳答案

您可以使用 async/await 从 Controller 异步获取 task。需要您的 Controller ,然后为路由 async (req, res) 制作函数,并调用您的 Controller 上的函数,该函数使用 task 返回 await 。您的 Controller 中的函数也应该是 async 并且要么直接返回 sequelize Promise,要么在根据需要修改数据后返回。

// import your controller
const controller = require('./controllers/controller');

// make the function async
router.get("/home", async (req, res) => {
// await the result of a function that is async (returns a promise)
const task = await controller.getTask(maybeSomeId);
const message = req.session.user1;
res.render("home", {data: message, dataTwo: task});
});

// you can add error handling like this
router.get("/home2", async (req, res, next) => {
try {
// await the result of a function that is async (returns a promise)
const task = await controller.getTask(maybeSomeId);
const message = req.session.user1;
return res.render("home", {data: message, dataTwo: task});
} catch (err) {
return next(err);
}
});

关于node.js - 在 req,res 中调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67129392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com