2017-07-10 5 views
0
router.post('/api/getproductsbycategory', function(req, res){ 
var category = req.body.category 
Category.getCategoryId(category, function(err, categoryId){ 
    if(err){ 
     throw err; 
    } 
    if(categoryId.length){ 
     Product.getProductByCid(categoryId[0]._id, function(err, product){ 
      if(err){ 
       throw err; 
      } 
      res.json(product) 
     }) 
    } 
}) 

});nodejsを使用してmongodbの2つの異なるコレクションの値を検索する方法

router.post('/api/getproductprice', function(req, res){ 
var product = req.body.id 
Productprice.getProductprice(product, function(err, productprice){ 
    if(err){ 
     throw err; 
    } 
    res.json(productprice) 
}) 

})

私は1つのコレクション内のいくつかの製品を持っていると価格は、私は価格と製品固有のIDを挿入していた他のcollection.whenであるが、私はforEachのとの価格で複数の製品を呼び出すときその時、製品と価格の価値は何度も違ってきます。これは同期の問題だと思います。これはどうすればいいですか?

+0

あなたのコードを共有してください。 foreachループで問題になる可能性があります。 – licitdev

+0

私は両方の関数をAngularjsを使って呼びます。私はAngular上で呼び出すことができるオブジェクトの製品と価格の両方の戻り値の配列のような何かを行うことができますか?そこから@時間を呼び出す必要はありませんか? –

答えて

0

すでにCategoryモデルのクエリが必要とされていないカテゴリがある場合は、1つのクエリですべてを行うことができます。

Product 
.aggregate([ 
     $match: { 
      category_id: YOUR_CATEGORY_ID 
     }, 
     $lookup: { 
      from: "Productprice", 
      localField: "category_id", //category_id field inside Product model 
      foreignField: "category_id", //category_id field inside Price model 
      as: "price" 
     }, 
    ]) 
+0

しかし、私のカテゴリ、製品、および製品の価格は、3つの異なるコレクションであり、このコレクションの3つの基準に一致するデータを取得したいと考えています。 –

+0

おかげさまで、両方のモデルのスキーマを作成する方法をもう1つ教えてください。 –

+0

私は通常[mongoose](http://mongoosejs.com/docs/guide.html)を使用します – Vanojx1

関連する問題