javascript 我的代码有什么问题?如何从MongoDB中删除一个集合?

lmvvr0a8  于 2023-01-16  发布在  Java
关注(0)|答案(2)|浏览(130)

我正在尝试使用postmap API从mongodb中删除一个集合。下面是我的代码。更新功能工作正常。但是,删除功能不工作。它显示内部服务器错误。我不知道为什么?

const router = require("express").Router();
const User = require("../models/User");
const bcrypt = require("bcrypt");
//uodate
router.put("/:id", async (req, res) => {
    if ((req.body.userId === req.params.id) || req.body.isAdmin) {
        if (req.body.password) {
            try {
                const salt = await bcrypt.genSalt(10);
                req.body.password = await bcrypt.hash(req.body.password, salt);
            }
            catch (err) {
                return res.status(500).json(err);
            }
        }
        try {
            const user = await User.findByIdAndUpdate(req.params.id, {
                $set: req.body,
            });
           return res.status(200).json("Account has been updated");
        }
        catch (err) {
            return res.status(500).json(err);
        }
    }
    else return req.status(400).json("You can only update your account!!!");
});
//delete
router.delete("/:id", async (req, res) => {
    if ((req.body.userId === req.params.id) || req.body.isAdmin) {
        try {
           await User.deleteOne(req.params.id);
            return res.status(200).json("Account has been deleted");
        }
        catch (err) {
            return res.status(500).json(err);
        }
    }
    else return res.status(400).json("You can only update your account!!!");
});


module.exports = router;

帮我弄这个。

gudnpqoy

gudnpqoy1#

您使用的是deleteOne()方法,如果要删除整个集合,则应使用deleteMany()方法:

await User.deleteMany({});
8iwquhpp

8iwquhpp2#

Model.deleteOne方法需要一个filter对象,如{name: "value'"}。您传递的是一个字符串req.params.id。如果您找到错误的全文,它可能会抱怨该字符串不是一个对象。
您可能希望使用Model.findByIdAndDelete方法,如

await User.findByIdAndDelete(req.params.id);

相关问题