2017-01-31 2 views
1

MongoDBが新しく、別のコレクションのデータをレスポンスに取り込もうとしています。次のように最も簡単な例は次のようになりますMongooseでネストされた参照を設定することはできますか?

const CartSchema = new Schema({ 
    items: [{ 
    product: { type: Schema.Types.ObjectId, ref: 'product' }, 
    qty: Number 
    }], 
    ... 
}); 

Iの関係は、ルートレベルであるが、上記の例では、私は、例えば、独自の特性を有する項目の配列を有する場合.populate()を使用することができますよqty、および_idの製品への参照。私は製品オブジェクトを各カーアイテムに取り込みたいと思いますが、それを行うための「正しい」方法が何であるかについての例を見つけることはできません。

Cart.findById(id) 
    .populate('products') // <-- something like this 
    .then(record => ...) 
    .catch(next); 

私はおそらく、カートレコードを見つけた後、製品のコレクションに別の.find()を行うと、手動で最初のオブジェクトを拡張することができることを知っているが、私はそこに期待していたが、元のクエリ内のデータを移入する方法でしたか?

答えて

1

これを試すことができます、それはあなたのために動作します。

Cart.findById(id) 
    .populate('items.product') 
    .then(record => ...) 
    .catch(next); 

.populate('items.product')は、アレイ内に存在する全てのカート項目のproductオブジェクトをpopulateう。

関連する問題