我正在尝试运行一个删除请求,但它不起作用,我在另一个项目上使用了完全相同的逻辑,并且它在那里工作。
这是包含删除请求和确实有效的发布请求的路由文件
const express = require("express");
const router = express.Router();
const User = require("../models/users");
const cardSchema = require("../models/card");
//add card request
router.post("/:id/addcard",getUser,async (req,res) => {
try {
if (req.body != null) {
const newCard = new cardSchema({
name: req.body.name,cardNumber: req.body.cardNumber,ccv: req.body.ccv,expiration: req.body.expiration,});
res.user.cardInfo.push(newCard);
}
const updatedCardInfo = await res.user.save();
return res.status(200).json(updatedCardInfo);
} catch (error) {
return res.status(400).json({ message: error.message });
}
});
//delete card request
router.delete("/:id/deletecard",res) => {
if (req.body !== null) {
res.user.cardInfo.remove(req.body);
}
try {
const updatedUser = await res.user.save();
res.status(200).json(updatedUser);
} catch (error) {
res.status(400).json({ message: error.message });
}
});
//get user middleware
async function getUser(req,res,next) {
let user;
try {
user = await User.findById(req.params.id);
if (user == null) {
return res.status(404).json({ message: "Cannot find user" });
}
} catch (error) {
return res.status(500).json({ message: error.message });
}
res.user = user;
next();
}
module.exports = router;
我已经三重检查我是否使用了正确的 URL 并在 req.body 中传递了正确的信息。我在调用删除请求后收到了用户信息,但没有删除卡信息。我还在我的数据库中检查了它是“cardInfo”,所以那里也没有拼写错误。