2017-04-26 11 views
0

モデルが識別子継承機能を使用するmongooseを使用してMongoデータベースから読み取ろうとしていますが、DB内の文書はすべてJava Mongoドライバ)を使用しています。サブクラスモデル(discriminator関数を使うサブクラスモデル)を使った私のすべてのクエリは、DBから読み込もうとすると空の配列を返します。 mongooseはそれらの文書に弁別子キーが含まれることを期待しているからですが、文書を挿入するサービスは弁別子キーを知らないため、mongoDB文書に設定していないためです。mongoose discriminatorsを使用してMongoDBコレクションを照会する方法

モデルを作成し、別のサービスによって挿入されたこれらのドキュメントを引き続きクエリできるように、ディスクリミネータ機能を使用するにはどうすればよいですか?

継承は私が作成しているモデルのフィールドをきれいに構造化し、モデル固有の静的メソッドを定義することができるため、重複コードを書き込まないようにするために、識別子を使用したいと思います。 mongooseに内蔵されているdiscriminatorパターンを使用せずにこれらの目標を達成するより良い方法があれば、共有してください! documentationによると

答えて

0

:マングースは異なる 弁別モデル間の違いを伝える

方法は デフォルトで__tされる「弁別キー」です。 Mongooseはスキーマに__tという文字列パスを追加し、 という文字列パスを使用して、このドキュメントがどのドキュメントの識別子であるかを追跡します。

また、mongooseは、単一のコレクションに識別器を含むドキュメントを保存します。

__tパラメータを保存する必要があるドキュメントにアクセスするには、同一のディスクリミネータを持つスキーマを単一のコレクションに保存するかどうかを確認します。

関連する問題