【问题标题】:Calling a function within req,res在 req,res 中调用函数
【发布时间】:2021-04-17 01:22:19
【问题描述】:

我的路线中有以下代码 sn-p:

router.get("/home", (req,res) =>{
        var message = req.session.user1;
        res.render("home", {data: message});
    })

在我的 taskController.js 中,我有一个函数,我可以使用 Sequelize 查询数据,该函数也应该传递给 home。如何在上面的sn-p中插入函数?

我最初的想法是

 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 中)为我进行查询。所以我的选择是在该控制器中调用该函数并在上面的 router.get 中使用它,但我不太确定如何合并它。

【问题讨论】:

    标签: node.js express sequelize.js


    【解决方案1】:

    您可以使用async/await 从控制器异步获取task。需要您的控制器,然后为路由 async (req, res) 创建函数,并使用 await 在控制器上调用返回 task 的函数。你的控制器中的函数也应该是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);
      }
    });
    

    【讨论】:

    • 实际上我的getTask函数是这样完成的exports.displayHome = async(req, res)所以它可以被router.get("/home", controller.getTask);调用但我希望它发生在 router.get("/home", (req,res) => ... 怎么样?
    猜你喜欢
    • 1970-01-01
    • 2020-02-23
    • 2012-12-29
    • 1970-01-01
    • 2019-11-01
    • 2022-12-11
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    相关资源
    最近更新 更多