【问题标题】:Delete specefic element from MongoDB Colection based on ID根据 ID 从 MongoDB 集合中删除特定元素
【发布时间】:2021-02-14 06:05:32
【问题描述】:

我在 MongoDB 中有一个名为“成员”的集合。每个成员都有 first_name、last_name 和自动生成的对象 ID。我正在使用 ExpressJS 获取数据并使用 VueJS 显示它。这适用于 get 和 post 方法,但我还需要一个 delete 方法。我的问题是如何找到用户点击并想要删除的特定成员?这是我的代码(简化版)

<form action="/delete" method="delete">
 <ul>
      <li v-for="(value, index) in allTeamMembers">
          {{ 'Member: ' + value }}
          <button type="submit">Delete</button>
     </li>
 </ul>
</form>


expressApp.delete('/delete' , function (request, response) {
        MongoClient.connect(url, function (err, db) {
            if (err) throw err;
            let dbo = db.db(dbName);
            let myquery = {first_name: 'Tobias'};
            dbo.collection("Members").deleteOne(myquery, function (err, obj) {
                if (err) throw err;
                console.log("1 document deleted");
                db.close();
            });
        });
    });

这当然是我的查询可行,需要更改,但我找不到从列表中查询单击元素的方法。现在,它只是删除了所有 first_name = "Tobias",但我希望它从列表中删除单击的元素。

【问题讨论】:

  • 首先,您必须将用户数据传递到后端。接下来,必须在您的控制器中获取传递的数据,例如 request.body 或 request.query。最后,您可以像@charlieb 提到的那样轻松删除您的文档。
  • 我的列表包含已经从数据库中“获取”的数据,并且我也有 ObjectID。但是当我单击它旁边的按钮时,我找不到获取对象 id 的方法。
  • 那么你必须删除 mongodb 标签并在 vue.js 中搜索 :)

标签: javascript mongodb express vue.js collections


【解决方案1】:

如您所说,如果您要查询 Tobias,它将找到所有 Tobias 的示例。 也许您应该将 mongoDB ID 作为属性存储在元素中,以便在单击时轻松访问它。 然后您可以按照第一个示例尝试根据唯一 ID 删除:https://docs.mongodb.com/manual/reference/method/db.collection.deleteOne/#examples

【讨论】:

  • 感谢您的提示。所以我会试试。你是完全正确的,我的问题是检索 ID,这是一种很好的方式。我做了一些小改动并更新了代码示例。
猜你喜欢
  • 1970-01-01
  • 2018-09-17
  • 2023-03-21
  • 2011-02-06
  • 1970-01-01
  • 2020-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多