我正在try 向我的URL传递两个参数,一个用于按类型显示数据,另一个用于按标题、年份等进行搜索. 我的问题是,当我试图传递第二个参数时,由于某些原因,它总是被视为未定义 这是我的URL router.get("/documents/serach/:key?/:sort?", verifyUser, getAllDocuments);

这是我的AXIOS电话

 const getDocuments = async () => {
    const response = await axios.get(
      `http://localhost:5000/documents/serach/${query}?/${query2}?`
    );
    setDocuments(response.data);
  };

我也试着用params: { key: query1, sort: query2 },,但不起作用. 即使我切换了第一个参数,也只传递了第一个参数,无论第一个写的是什么都可以.

推荐答案

您似乎误解了HTTP的一个非常基本的方面.这是一个关于查询字符串的维基百科页面,可能会有帮助.

https://en.wikipedia.org/wiki/Query_string

如果您确定查询字符串是将这些值发送到您的服务器的最佳方式,那么您还需要查看Express的文档(假设您正在使用该文档).

https://expressjs.com/en/4x/api.html#req.query

您将希望执行以下操作:

const getDocuments = async () => {
    const query = new URLSearchParams({ key: query1, sort: query2 })
    const response = await axios.get(
        `http://localhost:5000/documents/search/?${query}`
    );
    setDocuments(response.data);
  };

然后,您的路由定义将如下所示:

router.get('/documents/search', verifyUser, getAllDocuments);

async function getAllDocuments(req, res) {
    const { key, sort } = req.query;

    // ...
}

以下是关于URLSearchParams()的一些文档:

https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams

Node.js相关问答推荐

容器端口是容器内 node 应用程序的端口吗?

使用NodeJS输出检索Base64图像的网络报废

如何更改ejs中的镜像src,以防从OMDB API获取的某些镜像具有src=N/A

如果非SQL函数在事务内部运行失败,PG-Promise事务会回滚吗?

如何在不丢失其他键的情况下解开子文档数组,然后反转该过程?

findoneandupdate()方法更新数据库,但其响应在请求中返回为null

如何在医学中按patientId查找一个并同时插入多个数据

TS 后端开发:prismagenerate找不到已安装的@tsed/prisma包

Nestjs swc 错误:找不到模块项目路径/src/app.module

为什么 Cors 在 NodeJS 中不起作用

我收到警告:发现函数rs-ms-v1不受支持的运行时nodejs18.x× 不受支持的运行时

如何找到特定文档并更新数组中特定键的值?

如何从哪个应用程序用户中找到在 Firebase 身份验证中进行身份验证的用户

为什么在调用数据库调用时我的参数没有定义?

什么是nestjs错误处理方式(业务逻辑错误vs.http错误)?

Node_redis - 如何删除密钥?

如何在 Node.js 中等待子进程完成

如何为 node.js 服务器分配域名?

从 zip 文件在 AWS 中创建 lambda 函数

Route.get() 需要回调函数,但得到对象未定义