2016-12-02 74 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