私はマングースのドキュメントから、カスタムスキーマタイプを作成して既存のものに追加できることを読みました。
示唆されたように、私はmongoose-longの例を調べようとしました: https://github.com/aheckmann/mongoose-long
これは、マングース モデルのプロファイルを持つ開発中のアプリケーションで必要です。プロファイルにはname
、などのいくつかのフィールドsurname
がありMultiValueField
ます。AMultiValueField
は、次の構造を持つオブジェクト上にあります。
{
current : <string>
providers : <Array>
values : {
provider1 : value1,
provider2 : value2
}
}
上記の構造には、フィールドの値を取得できる許可されたプロバイダーのリスト (優先度順) があります。現在のプロパティは、フィールドの値として使用するために現在選択されているプロバイダーを追跡します。最後に、オブジェクト値には各プロバイダーの値が含まれます。
node.js でオブジェクトを定義しました。そのコンストラクターは上記の構造を引数として取り、新しいプロバイダーを設定したり、値を追加したりするための多くの便利なメソッドを提供します。
プロファイルの各フィールドは、異なるプロバイダーのリストで初期化する必要がありますが、その方法はまだ見つかりません。
MultiValueField
として定義する場合Embedded Schema
、各フィールドを としてのみ持つことができますArray
。また、プロバイダーのリストを使用してプロファイルを作成する時点で、すべてのフィールドを初期化することはできません。
SchemaType MultiValueFieldType
最善の解決策は、を返すキャスト関数を持つを定義することだと思いますMultiValueField object
。しかし、そのようなカスタム スキーマ タイプを定義するにはどうすればよいでしょうか? また、プロファイルのスキーマで定義するときにカスタム オプションを使用するにはどうすればよいですか?
カスタムスキーマタイプの作成方法を尋ねるために、mongoose Google グループに質問を投稿しました: https://groups.google.com/forum/?fromgroups#!topic/mongoose-orm/fCpxtKSXFKc