当前位置: 首页 > 知识库问答 >
问题:

如何用MERN堆栈发出GET请求

南门峰
2023-03-14

我正在尝试从数据库中提取数据。我从回应中得到的都是这样的:

Response {type: "cors", url: "http://localhost:5000/products/", redirected: false, status: 200, ok: true, …}

我需要帮助如何在前端和后端提出请求:

以下是ReactJS方面:

getProducts() {
        fetch('http://localhost:5000/products/', {
            method: "GET",
        })
        .then(response => console.log(response))
        .then((response) => {
            console.log(response.data)
            this.setState({products: response.data});
        })
        .catch((error) => {
            console.error(error);
        });
    }

以下是请求的服务器端:

router.get('/', (req, res) => {
    productService.getAll(req.query).then(products =>{
        res.status(200).json(products)
    }).catch(() => res.status(500).end())
})

以下是ProductService:

async function getAll(query) {
    let products = await Product.find({}).lean()

    return products;
}

附注:产品在MongoDB Compass中创建时没有错误:

共有1个答案

微生嘉祥
2023-03-14

您应该调用response.JSON()从响应流中提取JSON主体,并将其返回到链中的下一个then块。并且可以省略方法配置,因为默认情况下它是get

fetch('http://localhost:5000/products/')
  .then((response) => response.json())
  .then((products) => {
    this.setState({ products })
  })

顺便说一句,您不应该硬编码API URL。使用环境变量。如果您使用的是Create React应用程序,则可以将以react_app_为前缀的环境变量添加.env中,如果您有自定义Webpack设置,则可以使用dotenv-webpack。

fetch(`${process.env.BASE_API_URL}/products`)
  .then((response) => response.json())
  .then((products) => {
    this.setState({ products })
  })
 类似资料:
  • 我需要帮助在类别上发布多个数据,当我在选择输入上选择多个数据并提交时,它会抛出错误。请参阅下面的错误 下面是模型模式。模型 这是我的路线文件。路线 当我在输入选择上选择多个时,这是我提交时的错误。 但当我只选择一个时,它就会通过。我只能保存一个在五月类别字段,我想保存多个在我的类别字段。

  • 下面是我MERN项目的文件结构。 客户端文件夹包含反应服务器。客户端在<code>localhost.Client上运行。comServer文件夹包含节点的代码。js服务器。服务器运行于 每当我从客户端向服务器发出请求时。如何缓解 csrf 攻击?确保向服务器发出的请求来自客户端,而不是来自任何其他源。

  • 我正在尝试将Google Maps添加到我的MERN Stack应用程序中。根据一些消息来源,我发现在create-react-app中添加.env文件并不能解决隐藏API_Keys(https://create-react-app.dev/docs/adding-custom-environment-variables/)的目的。如何将API_KEYS存储在后端(node.js)中并从React

  • 我有非常简单的组件与axios和材料表。axios请求中的数据应该只加载一次,然后单击刷新按钮。 取消注释设置请求(res.data.demo请求)给我堆栈大小超过了错误,但我在这里看不到错误。我到底做错了什么? 编辑:尝试重新安装npm,将状态添加到dependency数组,获取

  • 问题内容: 如何使用jQuery明确提出AJAX HTTPS GET请求?我正在尝试执行以下操作。在https页面上,我有一行代码,但是出现以下错误 如果相对资源来自https页面,为什么AJAX调用会尝试使用HTTP协议访问页面?如果$ .get(url)方法默认执行此操作,那么我如何使用jQuery进行显式的HTTPS GET请求?在http://forum.jquery.com/topic/

  • 问题内容: 在Java中,是否有任何方法可以查看完整的,未截断的堆栈跟踪(例如,通过增加记录的帧数),或者以其他方式查看堆栈跟踪的 底部 ?通常,堆栈跟踪会从顶部截断为1024帧,但是对于堆栈溢出问题,这是毫无价值的,因为您确实需要查看是谁触发了触发递归的调用,位于底部附近。在堆栈 中间 截断会更好,但是显然Sun的JVM不够聪明。 也许甚至一些特定于Sun的特殊标志?我尝试将堆栈大小减小到最小允