Node.js ReactJs、Express和MongoDB应用程序的POST/PUT/DELETE请求失败

Node.js ReactJs、Express和MongoDB应用程序的POST/PUT/DELETE请求失败,node.js,reactjs,mongodb,express,mongoose,Node.js,Reactjs,Mongodb,Express,Mongoose,我已经使用node/express和mongodb创建了一个后端。我有一个通过mLab运行的mongodb云实例。为了创建对db的CRUD请求,我使用了mongoosepackage。代理设置正确,我的服务器在端口5000上运行,reactjs前端应用在端口3000上运行,所有数据在系统中正确流动 这是我的模式-models/Campaign.js: const mongoose = require("mongoose"); const { Schema } = mongoose; const

我已经使用node/express和mongodb创建了一个后端。我有一个通过mLab运行的mongodb云实例。为了创建对db的CRUD请求,我使用了
mongoose
package。代理设置正确,我的服务器在端口5000上运行,reactjs前端应用在端口3000上运行,所有数据在系统中正确流动

这是我的模式-models/Campaign.js

const mongoose = require("mongoose");
const { Schema } = mongoose;

const campaignSchema = new Schema({
  name: String,
  createdOn: Number,
  price: Number,
});

mongoose.model("campaigns", campaignSchema);
这些是我的路线-路线/activityroutes.js

const mongoose = require("mongoose");
const Campaign = mongoose.model("campaigns");

module.exports = app => {
  app.get(`/api/campaigns`, async (req, res) => {
    let campaigns = await Campaign.find();
    return res.status(200).send(campaigns);
  });

  ...

  app.put(`/api/campaign/:id`, async (req, res) => {
    const { id } = req.params;

    let campaign = await Campaign.findByIdAndUpdate(id, req.body);

    return res.status(202).send({
      error: false,
      campaign
    });
  });

  app.delete(`/api/campaign/:id`, async (req, res) => {
    const { id } = req.params;

    let campaign = await Campaign.findByIdAndDelete(id);

    return res.status(202).send({
      error: false,
      campaign
    });
  });
};
从我的前端,我调用这些端点,如下-api.js

GET请求工作绝对正常:

export const fetchCampaigns = async () => {
  const url = `api/campaigns`;

  try {
    const response = await fetch(url);

    return await response.json();
  } catch (e) {
    console.error(e);
  }

  return null;
};
但是,PUT/DELETE请求失败,404:

export const updateCampaign = async (id, data) => {
  const url = `api/campaign/${id}`;

  try {
    const response = await fetch(url, {
      method: "PUT",
      body: JSON.stringify(data),
      headers: {
        "Content-Type": "application/json"
      }
    });

    let results = await response.json();

    return results;
  } catch (e) {
    console.error(e);
  }

  return null;
};
基本上,任何像
api/xyx/:id
这样的请求都会失败! 在postman上,相同的PUT/DELETE请求也可以正常工作


我一辈子都搞不懂为什么我会得到404。请帮忙

在发出PUT/DELETE请求之前,请尝试在控制台中打印您的
url
。看起来不错吗?@AjayDabas ya我检查过了,看起来不错:
http://localhost:3000/api/campaign/5deb6596e7179a3015b03a68
如果我把同样的请求放在postman中,它就可以正常工作了。需要注意的是,这里的端口是
3000
,但我的服务器是
5000
。我相信代理应该能够解决这个问题,因为GET请求工作得很好。您在GitHub或其他地方有开源代码吗?我想复制错误并亲自查看。让我推送它并返回给您。添加
“代理”:http://localhost:5000
package.json中的
修复了您的问题。因此,您的代理未正确配置。