【问题标题】:mongoose deleteone resulted 0猫鼬删除一个结果 0
【发布时间】:2021-12-21 03:33:55
【问题描述】:

我使用 mongoose 删除 mongodb 上的记录。

这是我的记录

    MongoDB Enterprise > db.contacts.find().toArray();
[
        {
                "_id" : ObjectId("6187ebca4691bb4a3eeeb91d"),
                "nama" : "herahadi",
                "notlp" : "084234234234",
                "email" : "herahadi@gmail.com",
                "__v" : 0
        },
        {
                "_id" : ObjectId("618861aaeeb7aeaf202a1890"),
                "nama" : "izam",
                "notlp" : "08533523232323",
                "email" : "izam@gmail.com",
                "__v" : 0
        }
]

我的 app.js

    var methodOverride = require('method-override');    
    .....
    app.delete('/contact',async(req,res)=>{
    console.log('req.body.nama='+ req.body.nama);

    Contact.deleteOne({ nama: req.body.nama }).then((result)=>{
        console.log(result);
        res.redirect('/contact');
    });

这是调用删除的页面。

<form method="POST" action="/contact?_method=DELETE" class="d-inline">
                    <input type="hidden" name="nama" value="<%= contact.nama %> ">

如果我运行我的项目,我会得到这个结果

req.body.nama=izam 
{ deletedCount: 0 }

谁能告诉我什么是错的?为什么删除结果为0?

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    如果你想返回删除值的结果,那么你应该使用 Mongoose | findOneAndDelete() 函数。

    findOneAndDelete() 函数用于查找匹配的文档,将其删除,并将找到的文档(如果有)传递给回调。

    https://www.geeksforgeeks.org/mongoose-findoneanddelete-function/

    【讨论】:

    • 我更改为 findOneAndDelete 并在控制台上记录其结果为 null
    • 我已经检查过了,但是我在附上截图时发现了一些问题,你能在我的个人资料上给我一些声誉
    • 而不是使用app.delete,也可以尝试app.post方法
    【解决方案2】:

    请检查代码和随附的屏幕截图以获取结果。 带有完整用户结果的 mongoose 查询的终端结果的屏幕截图 第一张图片 https://i.stack.imgur.com/SrGyL.png

    Nodejs 代码脚本,用于查找和删除 第二张图片 https://i.stack.imgur.com/IWN9p.png

    【讨论】:

      【解决方案3】:

      我通过更改为 @Naveem 提到的 findOneAndDelete() 解决了我的问题。但还必须将 req.body.nama 更改为 JSON.stringify(req.body.nama) 否则它仍然无法删除记录。

      这是我的最终代码

      app.delete('/contact',(req,res)=>{
          console.log('req.body.nama='+ req.body.nama);
          // const contact = await Contact.findOne({nama:req.body.nama});
      
          Contact.findOneAndDelete({ nama: JSON.stringify(req.body.nama) }).then((result)=>{
              
              console.log(result);
              res.redirect('/contact');
          });
      

      【讨论】:

        猜你喜欢
        • 2017-05-08
        • 2016-09-26
        • 2022-01-23
        • 2018-08-22
        • 2018-09-30
        • 2023-03-26
        • 2017-12-24
        • 2017-08-09
        相关资源
        最近更新 更多