0

我有一个 React 组件,它必须对 MongoDB 数据库执行带有两个参数的 find({}) 查询。

const likes = await Likes.find({ postId: postId, userId: userId }).exec()

由于 Mongo 代码仅适用于服务器,因此我必须进行 API 调用(我正在使用 NextJS)。这个 API 调用显然是一个 GET 请求。如何使用 SWR(或 fetch)将“postId”和“userId”传递给获取请求?

我试图通过“身体”将它们作为对象传递,但我认为这根本不是正确的方法。

const likesPerUser = {
    postId: postId,
    userId: userId
}

const docs = await fetch('/api/likes/user', {
    method: 'GET',
        headers: {
            Accept: 'application/json',
            'Content-Type': 'application/json',
        },
    body: JSON.stringify(likesPerUser),
})

我无权访问 URL 查询字符串

我有一种感觉,我可能在这里不太重要。任何帮助将不胜感激。干杯,马特

4

2 回答 2

2

使用查询参数的解决方案

您可以像query params在 GET 请求 URL 中一样传递参数。

这是具有多个查询参数的 URL 的格式:

http://localhost:8000/api/likes/user?postId=xyz&userId=123

在这里,您可以看到?表示查询参数已启动的符号。而且,您还会注意到&用于分隔多个查询参数。这样,您可以发送尽可能多的查询参数。

注意:所有查询参数都是string. URL 中的查询参数大小最多可包含1024 个字符

以下是用于从以下位置接收查询参数的示例代码node.js backend

exports.sampleFunction = async (req, res) => {
    const postId = req.query.postId
    const userId = req.query.userId

    // write your code here
}

这是从using发送查询参数的示例代码:front-endfetch

const docs = await fetch(`/api/likes/user?postId=${postId}&userId=${userId}`, {
    method: 'GET',
        headers: {
            Accept: 'application/json',
            'Content-Type': 'application/json',
        }
})
于 2021-08-06T11:23:39.557 回答
2
let options = {
method: 'GET',
headers: {accept: 'application/json', 'content-type': 'application/json'},
body: JSON.stringify({
    your data parameters 
}), };

fetch('url link', options)
.then(response => response.json();)
.then(response_json => {
    console.log(response_json);
})

或者也像这样在你的 url 中设置查询参数。http://localhost:8000/test_data?postId=xyz&userId=123

于 2021-08-06T11:34:47.617 回答