2016-12-02 10 views
3

私のWebアプリケーションのコメントセクションから投稿を削除しようとしています。 MongodbはobjectIdを渡しますが、角度2のフロントエンドからは取得できません。デフォルトでのObjectIdは、私は私の削除機能でPost._idを呼び出し、それがすべてこの情報を通過し、私のフロントエンドにそう_idとして渡されオブジェクトIDで削除する角度2とmongodb

enter image description here

私が実際にしたいことは見てデータベース自体によって与えられた独特のObjectIdでありますこのよう

enter image description here

は、どのように私は自分のアプリケーションのフロントエンドでこの値を得ることができますか?私はgithub上の私のプロジェクトへのすべてのコードは、here私のUIと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 /モデル -

    enter image description here

    を実行DataAccess.cs

API私は、私はこの修正を行う必要があると考えています私の_idをオブジェクトとし、文字列として渡しているので、APIレイヤーは...これは私の推測であり、これをどうやって行うのかは分かりません。

+0

わかりません。問題は 'ObjectId'が文字列ではなくオブジェクトとして直列化されることです。 – Derlin

+0

私はそれが起こっていることを信じています... – Bean0341

+0

どこにバックエンドからフロントエンドにmongoオブジェクトを渡しますか? – Derlin

答えて

1

削除のために一致するオブジェクトIDを構築します

私の問題を解決する方法を....

  1. 私は戻って私のモデルに行くと

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

  2. をそれを解析することによって文字列に私のObjectIdを変換しなければならなかった私は、その後変更私のHTTP呼び出しのすべてに私の新しいIdフィールドを追加しました私は私のAPIは私のオブジェクトの実際のIDを取得する実行したときに、私がのObjectIdで呼んでいたところから、今

  3. 今私の新しい文字列値Idに要請するenter image description here

  4. 最後に、新しく生成したIdフィールドをフロントエンドに追加し、削除関数の古いobjectId値を新しいIDに置き換えました。

すべてのコードは私のgitプロジェクトで更新されました。関連ドキュメントについては、該当するファイルを参照してください。

0

レビュー後、オブジェクトIDオブジェクトではなくオブジェクトID文字列でオブジェクトを削除しようとしているようです。 PostAPIController.cs

ライン74

objds.Remove(post._id)において

これは、一致する文字列値を持つオブジェクトを探しています。

それはようにする必要がありますかなり確信してこの

objds.Remove(ObjectId.Parse(post._id))これは私が見つけた

+0

それは、ObjectIdを文字列に変換しようとしているので、それを許可しません。 Post.csからオブジェクトを取り込んでそこに文字列に変換する方法が必要なのはなぜですか? – Bean0341

関連する問題