2016-12-02 72 views
3

我想从我的web应用程序中的评论部分删除帖子。 Mongodb传递一个objectId,但我无法从我的angular 2前端获得它。默认情况下的ObjectId作为_id这么过去了我的前端我打电话Post._id我删除功能,并通过这一切信息删除对象Id角2和mongodb

enter image description here

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

enter image description here

我怎样才能让我的应用程序的前端这个价值?我有我的项目在github上的所有代码位于here与我的用户界面和API后端。谢谢你的帮助!

从回购相对文件

  • UI/SRC /应用/组件 - PostData.Service.ts
  • UI/SRC /应用/组件-postRand.component.ts
  • UI/SRC /应用/组件/模型 - Post.ts

  • API/SRC /控制器 - PostAPIController.cs

  • API/src目录/型号 - Post.cs
  • API/src目录/型号 - DataAccess.cs

API运行

enter image description here

我相信我需要进行此修复中api层,因为它通过我的_id作为一个对象,而不是一个字符串......这只是我的猜测,我不知道如何做到这一点。

+0

我不知道我明白。问题是'ObjectId'被序列化为对象而不是字符串? – Derlin

+0

我相信这是怎么回事... – Bean0341

+0

你的代码中的哪个地方将mongo对象从后端传递到前端? – Derlin

回答

1

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

  1. 我不得不通过解析出来

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

  2. 然后我说我的新ID字段我所有的HTTP调用改变再进去我的模型和我的ObjectId转换成字符串在哪里我被调用的ObjectId,到现在在我的新字符串值显示来电现在

  3. ,当我跑我的API让我对象的实际标识enter image description here

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

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

0

检查后,它看起来像你试图通过对象id字符串而不是对象id对象来删除对象。

在PostAPIController.cs

线74

objds.Remove(post._id);

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

敢肯定这应该是这样的

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

这将构造一个对象ID匹配的删除

+0

它不会允许,因为它试图将ObjectId转换为字符串。我觉得我需要一些如何从我的Post.cs中取出对象并将其转换为字符串? – Bean0341