按对象ID删除角度2和mongodb

时间:2016-12-02 18:53:20

标签: mongodb angular

我正在尝试从我的网络应用中的评论部分删除帖子。 Mongodb传递了一个objectId,但我无法从我的2角前端获取它。默认情况下,ObjectId作为_id传递,所以在我的前端我在我的删除功能中调用Post._id并通过所有这些信息

enter image description here

我真正想要的是数据库本身给出的唯一ObjectId,看起来像这样

enter image description here

如何在应用程序的前端获取此值?我的github项目的所有代码都位于here,包含我的UI和API后端。谢谢你的帮助!

来自回购的

相关文件

  • UI / src / app / components - PostData.Service.ts
  • UI / src / app / components -postRand.component.ts
  • UI / src / app / components / models - Post.ts

  • API / src / controllers - PostAPIController.cs

  • API / src / models - Post.cs
  • API / src / models - DataAccess.cs

API正在运行

enter image description here

我相信我需要在api层中进行此修复,因为它将我的_id作为对象传递而不是字符串......这只是我的猜测,我不知道该怎么做此

2 个答案:

答案 0 :(得分:1)

我发现了如何解决我的问题......

  1. 我必须回到我的模型并通过解析它将我的ObjectId转换为字符串

    [BsonRepresentation(BsonType.ObjectId)] public string Id { get { return Convert.ToString(_id); } set { _id = MongoDB.Bson.ObjectId.Parse(value); } }

  2. 然后我将我的新Id字段添加到我的所有http调用中,更改了我通过ObjectId调用的位置,现在调用我的新字符串值Id

  3. 现在,当我运行Api时,获取对象的实际ID enter image description here

  4. 最后,我将新生成的Id字段添加到我的前端,用新Id替换删除函数中的旧objectId值。

  5. 我的git项目中的所有代码都已更新,请参阅相关文档中引用的文件。

答案 1 :(得分:0)

审核后,您似乎试图通过对象ID字符串而不是对象ID对象来删除对象。

在PostAPIController.cs

第74行

objds.Remove(post._id);

这是寻找一个字符串值匹配的对象。

很确定它应该像这样

objds.Remove(ObjectId.Parse(post._id))

这将构造一个对象id以匹配删除