我正在尝试发送一个POST请求,但它似乎是路由不工作的基础上的错误。 但是,我在控制台中记录了req.body.entries的值,因此它必须正常工作。 当我发送一个GET请求时,浏览器就坐并加载。 同样的事情也发生在邮差身上。 我试图弄清楚为什么我在POST请求上得到一个错误,而get请求处于静止状态。 提前谢谢你。
index.js
const successRoute = require("./routes/success");
app.use("/api/success", successRoute);
成功。js
router.get(
"/",
basicAuth({
users: { username: "password" },
}),
async function (req, res) {
try {
const entry = await Entry.find({});
res.sendStatus(entry);
} catch (err) {
res.sendStatus({ msg: "oops something went wrong" });
}
}
);
router.post("/", async (req, res, next) => {
try {
//console.log(req.body);
const { store, entries } = req.body;
Entry.findOneAndUpdate(
{ _id: store },
{ $set: { entries: +req.body.entries } },
{ new: true },
(err, doc) => {
if (err) {
console.log(err);
}
console.log(req.body.entries);
next();
}
);
} catch (err) {
const entry = new Entry({
_id: store,
entries: req.body.entries,
});
await entry.save();
res.sendStatus(200);
next();
}
});
我认为问题在于,在router.post()
中,您没有发送任何响应,您只调用next()
。 我看不出该请求的下一个路径。
我推荐这样的东西:
router.post("/", async (req, res, next) => {
try {
//console.log(req.body);
const { store, entries } = req.body;
Entry.findOneAndUpdate(
{ _id: store },
{ $set: { entries: +req.body.entries } },
{ new: true },
(err, doc) => {
// throw the error and catch later
if (err)
throw err;
console.log(req.body.entries);
// send response instead of calling next()
res.sendStatus(200);
}
);
} catch (err) {
const entry = new Entry({
_id: store,
entries: req.body.entries,
});
await entry.save();
// send response
res.sendStatus(200);
// next(); // don't call next unless next route defined
}
});