【问题标题】:Node JS Query request.query is Empty节点 JS 查询 request.query 为空
【发布时间】:2020-03-21 10:36:12
【问题描述】:

我有一个 ReactJS 前端,我正在使用 Express 后端对我的 NodeJS 进行 fetch 调用,以获取返回的数据。我正在将 nodejs 应用程序部署到 Firebase Cloud Functions。我用于获取请求的 url 中包含参数,但 nodejs 中的查询似乎为空。

React JS 获取请求:

export const nodeJSFetch = async () => {
    const url =
        'https://project-node-js.firebaseapp.com/users?&userId=j872as3';

    try {
        const response = await fetch(proxyURL + url);
        const json = await response.json();

        return Promise.resolve(json);
    } catch (error) {
        console.log('Error: ', error);
        return Promise.reject(error);
    }
};

带有Express功能的NodeJS:

app.get('/users', (request, response) => {
    const query = request.query;
    const json = { user: query, hello: 'new response' };
    response.json(json);
});

当我在本地运行 Node JS 并使用 http://localhost:5000/users?&userId=j872as3 访问 URL 时,我得到以下 JSON 返回:

{ 
   "user":{ 
      "userId":"j872as3"
   },
   "hello":"new response"
}

当我从 fetch 中取回 JSON 时,我得到任何空查询/用户:

{ 
   "user":{},
   "hello":"new response"
}

我只是想知道我在这里缺少什么以及为什么查询似乎是空的。谢谢

【问题讨论】:

  • proxyURL + url 到底想做什么?最后的字符串是什么?
  • 什么是proxyURL?
  • @DougStevenson 代理 url 是我用来进行 fetch 调用以解决 CORS 问题的代理 https://project-cors-proxy.herokuapp.com/https://project-node-js.firebaseapp.com/users?&userId=j872as3 是最终的 url 字符串
  • 问题可能出在代理中。可以分享一下代理的代码吗?
  • @JoseV 我最终删除了代理并仅在节点 js 响应上启用了 cors。我得到了回复,但仍然没有 request.query

标签: node.js reactjs express google-cloud-functions


【解决方案1】:

我使用 Axios 让它工作。当我使用带有 url 中的参数的 Axios 执行此操作时,查询仍然为空。当我构建这样的请求时,它可以工作。

    axios
        .get('https://project-node-js.firebaseapp.com/users', {
            params: {
                userId: 'j872as3'
            }
        })
        .then(function(response) {
            console.log('Axios Response: ', response);
        })
        .catch(function(error) {
            console.log('Axios Error: ', error);
        });

我仍然不太清楚这背后的原因,特别是因为网络请求中的 URL 是相同的。

【讨论】:

    【解决方案2】:
    如果后端系统有超过 1 个查询,则使用

    &,并用作一个查询与另一个查询之间的连接。

    我的建议是删除 &,然后再次测试。

    https://project-node-js.firebaseapp.com/users?userId=j872as3

    【讨论】:

    • 它仍然说找不到站点
    • 如果您在本地计算机上对其进行测试,并且可以正常工作,那么我认为问题出在部署上。因为当我尝试从我自己的计算机访问 URL project-node-js.firebaseapp.com 时,它也会显示 Site Not Found。
    • @YashKaranke 该网站有效,但出于客户保密目的,我不得不更改 URL。 url 确实返回具有正确参数的响应。我通过删除 & 对其进行了测试,结果仍然相同
    猜你喜欢
    • 2017-12-28
    • 2017-01-25
    • 1970-01-01
    • 2021-08-11
    • 2016-06-09
    • 2017-04-12
    • 2018-05-06
    • 2018-08-02
    • 2015-06-30
    相关资源
    最近更新 更多