0

他の参照内にネストされた参照を設定しようとしています。私はそれを機能させていますが、それはちょっとハッキーなようで、これを達成する他の方法があるかどうか疑問に思っていました:

return Q.ninvoke(BoardSchema, 'find', {'_id': id}).then(function(board) {
    return Q.ninvoke(BoardSchema, 'populate', board, {path: 'lanes'}).then(function(board){
        return Q.ninvoke(LaneSchema, 'populate', board[0].lanes, {path: 'cards'}).then(function(lanes){
            board.lanes = lanes;
            return board;
        });
    });
});

すべての参照を設定する方法や、現在のように手動で設定せずにボード呼び出しの一部として 2 番目の設定を返す方法はありますか?

4

2 に答える 2

1

次のように、複数のネストされたドキュメントにデータを入力できるはずです。

Item.find({}).populate('foo foo.child').exec(function(err, items) {
    // Do something here
});

これには、参照がスキーマ定義で設定されている必要があります。

これが機能しない場合 (正直なところ、ほとんどの場合何らかの理由で発生します)、検索結果を連鎖させることができます。しかし、これはあなたのコードと大差ありません。

Item.find({}).populate('foo').exec(function(err, items) {
    Item.find(items).populate('bar').exec(function(err, items) {
        // Even more nests if you like
    });
});
于 2015-07-31T14:08:50.510 に答える
0

ギデオンの回答に基づく

Item.find({ _id: id})
  .populate({
    path: 'foo',
    model: 'FooModel',
    populate: {
      path: 'child',
      model: 'ChildModel'
    }
  })
  .exec(function(err, items) {
  // ...
});
于 2016-03-10T16:47:36.383 に答える