Node.js ReactJs、Express和MongoDB应用程序的POST/PUT/DELETE请求失败
我已经使用node/express和mongodb创建了一个后端。我有一个通过mLab运行的mongodb云实例。为了创建对db的CRUD请求,我使用了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
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:5000package.json中的
修复了您的问题。因此,您的代理未正确配置。