节点 JS 查询 request.query 为空

Posted

技术标签:

【中文标题】节点 JS 查询 request.query 为空【英文标题】:Node JS Query request.query is Empty 【发布时间】: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 【参考方案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 确实返回具有正确参数的响应。我通过删除 & 对其进行了测试,结果仍然相同

以上是关于节点 JS 查询 request.query 为空的主要内容,如果未能解决你的问题,请参考以下文章

如果给定参数,猫鼬聚合过滤器

请求正文为空,POST 节点 js ajax 调用 json Web 令牌

java代码怎样查出树形结构的某个节点的所有子孙节点?要算法实现!!

graphql.js:即使解析器正在为 sequilize 查询返回值,该字段仍为空

要遍历的节点不能为空(Hibernate SQL)

如何从 laravel 5.0 中的 Request 类中获取所有查询字符串