当前位置: 首页 > 知识库问答 >
问题:

nodejs快速路线无法向功能发送请求[重复]

牛景同
2023-03-14

我有一个路线,如果我用方法1实现它,它将很好地工作:

//METHOD 1
router.post('/my_competitive_landscape', ensureAuthenticated, async function (req, res) {
  let startDate = req.body.startDate
  console.log('METHOD1 startDate=', startDate)
  res.status(200).send('DONE');
})

当我向路由发出post请求时,它会运行该函数。我正在尝试使用此函数,以便通过更改路径使其像method2一样工作,可以在其他地方调用此函数:

//METHOD 2
router.post('/my_competitive_landscape', ensureAuthenticated, myCompFunc(req, res));

async function myCompFunc(req, res){
  let startDate = req.body.startDate
  console.log('METHOD2 startDate=', startDate)
  res.status(200).send('DONE');
}

因此,当我向路由发出post请求时,它会将req和res发送到mycopfunc函数。问题是,当我运行Method2时,我的代码甚至不会运行,因为它会抛出以下错误:

router.post('/my_competitive_landscape', ensureAuthenticated, myCompFunc(req, res));
                                                                         ^

ReferenceError: req is not defined

说req没有定义。我可以用Method1向函数发送req,这很好,为什么我不能用method2发送req呢?

编辑我可以通过将其更改为使用myCompFunc使其正常工作,但我可以指定多个变量,包括但不限于req和res吗?比如:

//method3
router.post('/my_competitive_landscape', ensureAuthenticated, myCompFunc(req.body.startDate, "otherVar", res));

async function myCompFunc(startDate, var2, res){
  console.log('METHOD3 startDate=', startDate, ', var2=', var2)
  res.status(200).send('DONE');
}

共有1个答案

东郭自珍
2023-03-14

只需在声明路由时删除对函数的调用,并在路由之前声明函数即可。这样地:

async function myCompFunc(req, res){
  let startDate = req.body.startDate
  console.log('METHOD2 startDate=', startDate)
  res.status(200).send('DONE');
}

router.post('/my_competitive_landscape', ensureAuthenticated, myCompFunc);
   
 类似资料:
  • 我试图创建一个路由到我的用户文件以及其他人,但当我使用邮递员发送获取请求https://localhost:3000/api/users我得到一个"无法获取api/用户/错误。 我尝试将require语句放入变量中,然后将其传递给应用程序。use()函数。我还确保了我的用户中的。第一个参数仅为“/”的js文件。此外,不仅仅是用户的路线,我的所有路线都不起作用。有人能看出我的错误吗? 这是服务器。j

  • 我正在尝试将的接口扩展为: 但我得到了以下错误: 没有与此调用匹配的重载。重载1/3'(路径:PathParams,…处理程序:RequestHandler

  • 问题内容: 我正在尝试使用Alamofire快速发布尸体的发布请求。 我的json主体看起来像: 我正在尝试使 NSDictionnary看起来像: 我使用Alamofire的请求如下所示: 该请求有一个错误,我相信问题出在字典列表上,因为如果我在没有列表的情况下发出请求,它就可以正常工作,所以有什么主意吗? 我已经尝试过建议的解决方案,但是我遇到了同样的问题: 问题答案: 你近了 参数字典格式看

  • Web 开发中经常需要处理 HTTP 请求、重定向和会话等诸多事务,相应地,Flask 也内建了一些常见的对象如 request, session, redirect 等对它们进行处理。 请求对象 request HTTP 请求方法有 GET、POST、PUT 等,request 对象也相应地提供了支持。举个例子,假设现在我们开发一个功能:用户注册。如果 HTTP 请求方法是 POST,我们就注册

  • 我有这个代码: 当为 true(执行 POST 或 PUT 请求)时,此代码会引发 IOException,并且不会完成请求。我尝试对 重新排序、编写调用和流创建块,但没有排列工作。 在所有情况下,BufferedReader都工作得很好,不会抛出任何异常。< code>getQuery正确返回URL编码的字符串。 以下是来自IOExc的堆栈跟踪: 最终发生的是请求通过,但没有一个POST或PUT

  • 我正在尝试根据下面的代码提出帖子请求: 此请求不需要身份验证,也不需要登录和密码。在邮递员那里,我可以成功地提出请求,但当我尝试执行上述代码时,我得到了: 401未经授权 我在邮递员那里模拟了错误,它给了我下面的信息: 当我在Postman中将身份验证方法更改为“No Auth”时,请求运行良好。 我想我必须在代码中设置这个选项“No Auth”,但我不知道如何设置。 我这样做: 但错误仍在继续。