【问题标题】:Using a POST request inside a GET request's call back (Closures)在 GET 请求的回调中使用 POST 请求(闭包)
【发布时间】:2017-08-27 13:37:22
【问题描述】:

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

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 请求,它将在服务器的响应中更新 ieres.send(Hello ${req.query.someVar}); 但 POST 请求仍会将原始 x 值记录到安慰。

为什么会这样?我已经尝试过很多事情,比如通过对象和通过其他函数等。

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

谢谢。

【问题讨论】:

    标签: javascript node.js closures


    【解决方案1】:

    我不确定您要做什么。没有人在 GET 中定义 POST,他们在根级别执行此操作,除非您希望 GET 请求更改服务器的行为。 app.post 的意思是“添加一个新的路由来处理一个 POST”。也许您想真正发送来自 GET 处理程序的 HTTP 请求?

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

    【讨论】:

    • 我正在通过查询参数获取信息,这些参数需要在对同一页面的发布请求中查询数据库。所以我需要帖子才能访问查询参数
    • 那么为了执行客户端需要 GET 和 POST 到同一个 URL 的操作?从来没有听说过有人这样做......如果你真的需要存储状态,你可以使用数据库或全局变量之类的东西,而不是闭包。但我认为通常你只会用 POST 请求发送 x。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-24
    • 2019-06-25
    • 2014-05-12
    • 2018-12-05
    • 1970-01-01
    • 2021-02-13
    • 1970-01-01
    相关资源
    最近更新 更多