2016-07-22 8 views
0

すぐに利用できない_idがある場合、別のコレクションのドキュメントへの参照を含むドキュメントを保存するための最良の方法は何ですか?マングース:参照付きプリアイブドキュメント

var ModelA = new Schema({ 
    aUniqueIdentifer: String, 
    ... 
)}; 

ModelAのaUniqueIdentifierは、別のデータソースから提供され、他のモデルでそれを識別するために使用されます。

var ModelB = new Schema({ 
    aUniqueForeignKey: type String, 
    aRef : { 
    type: mongoose.Schema.Types.ObjectID, 
    ref: 'ModelA' 
    } 
)}; 

だから私はMODELAを救うかもしれない:modelA = new ModelA({aUniqueIdentifer: '500'});

を次にmobdelBを節約するために、私はそれがMODELAオブジェクトとAREFだ移入する必要があります。そうするベストプラクティスは何ですか?保存する前にオブジェクトを返すためにfindOne(aUniqueForeignKey)を実行する必要がありますか?これはひどく効率的ではないようです。

私は人口を調べましたが、それは既存の参考資料のようです。

+0

からドキュメント(複数可)を使用してドキュメント内の指定したパスを交換するプロセスですあなたの質問を得ることができなくなったので、より有益になりました。 –

答えて

0

.preメソッドを使用して、保存する前に実行するメソッドを作成し、ロジックをその内部に配置できます。

ModelB.pre('save', function(next) { 
    // Check if id is available 
    // if not run another method 
    // run next() to exit 
    next(); 
}); 

これは、ModelBを保存する前に実行されます。

希望する場合は、さらに情報を追加すると、より具体的な解決策を提供できる可能性があります。

ポピュレートを試すことができます。

人口が自動的にあなたの質問をサポートするために、小さな例を置くことができ、他のコレクション(S)

http://mongoosejs.com/docs/populate.html

+0

これは良い方法ですか? mongo/mongooseはpresaveのパフォーマンスを向上させるために何かをしますか?手動で検索を実行するのですか? – mtro

関連する問題