在GET请求的回调中使用POST请求(闭包)

时间:2017-04-02 18:19:38

标签: javascript node.js closures

我将用这个简化的代码演示我的问题:

app.get('/test', (req, res) => {
    let x = req.query.someVar;
    app.post('/test', (req, res) => {
        console.log(x);
    });
    res.send(`Hello ${req.query.someVar}`);
});

第一次运行此代码时,POST回调函数会保存对x的引用,这是我作为查询参数传递的内容。如果我更改查询参数,发送另一个GET请求,它将在服务器的响应中更新,即res.send( Hello $ {req.query.someVar} );,但POST请求仍将记录原始x 1}}值到控制台。

为什么这样做?我尝试了很多东西,比如传递物体和其他功能等等。

我熟悉闭包是如何工作的,但显然并不完全,因为这绝对是POST回调保留查询参数值而不更新它们的问题。

感谢。

1 个答案:

答案 0 :(得分:1)

我不确定你要做什么。没有人在GET中定义POST,他们在根级别执行此操作,除非您希望GET请求更改服务器的行为。 app.post意味着添加一条新的路线来处理POST'。也许你想从GET处理程序发送 HTTP请求?

如果您希望更改行为,可能只是在根级别处理POST并在GET处理程序中设置一个全局标志,以指示POST应该对后续请求执行不同的操作。