Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从另一个表获取ID数组的值_Javascript_Node.js_Mongodb_Express_Mongoose - Fatal编程技术网

Javascript 从另一个表获取ID数组的值

Javascript 从另一个表获取ID数组的值,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,我是node和noSQL数据库的新手,在理解如何传递id数组以及如何使用另一个表中的id查找值时遇到了困难。我有两个表格“用户”和“产品”。“用户”表类似于: { "_id":ObjectId("54925687fd6s87f6dsf8"), "products":[ObjectId("fdsfdsa33f"),ObjectId("fdsa4grf4g6"), etc..] } { "_id":ObjectId("fdsfdsa33f") "color":red

我是node和noSQL数据库的新手,在理解如何传递id数组以及如何使用另一个表中的id查找值时遇到了困难。我有两个表格“用户”和“产品”。“用户”表类似于:

 {

    "_id":ObjectId("54925687fd6s87f6dsf8"),
    "products":[ObjectId("fdsfdsa33f"),ObjectId("fdsa4grf4g6"), etc..]
}
{
   "_id":ObjectId("fdsfdsa33f")
   "color":red
   "size":large
}
for(var i=0; i<user.products.length;i++){
  SELECT * FROM products WHERE id = user.products[i]
}
产品表类似于:

 {

    "_id":ObjectId("54925687fd6s87f6dsf8"),
    "products":[ObjectId("fdsfdsa33f"),ObjectId("fdsa4grf4g6"), etc..]
}
{
   "_id":ObjectId("fdsfdsa33f")
   "color":red
   "size":large
}
for(var i=0; i<user.products.length;i++){
  SELECT * FROM products WHERE id = user.products[i]
}
我想了解如何仅获取ID位于users.products数组中的产品的值,并通过一个路由将其发送到我的jade模板中。提前谢谢

现在我可以这样做,但是一次只能使用

    router.get('/dashboard', utils.requireLogin, function(req, res) {
       models.Product.findOne({ _id: req.user.product[2] }, 'color size', function(err, doc) {
          if(err){return console.error(err)}else{
          console.log(doc.name);
          var prop = doc.name;
          res.render('dashboard.jade', {prop : prop});
     }
   });
});
还有我的翡翠档案:

block body 
  .container
    .col-md-6
      h1 Manage Properties
      if user.products.length == 0
          p No Products
      else
        each prod, i in user.products
          li #{prop.color}
          li #{prop.size}
我知道我必须手动设置数组号,但我希望传递所有ID并获得所有产品信息的回调

我正在寻找的SQL等价物如下所示:

 {

    "_id":ObjectId("54925687fd6s87f6dsf8"),
    "products":[ObjectId("fdsfdsa33f"),ObjectId("fdsa4grf4g6"), etc..]
}
{
   "_id":ObjectId("fdsfdsa33f")
   "color":red
   "size":large
}
for(var i=0; i<user.products.length;i++){
  SELECT * FROM products WHERE id = user.products[i]
}

for(var i=0;i您可以通过Mongoose模型实例的方法实现这一点:

router.get('/dashboard', utils.requireLogin, function(req, res) {
  models.User
    // this assumes the id is stored in user.id
    .findOne({ _id: req.user.id })
    // populate the 'products' field using the ids in the array
    .populate('products')
    .exec(function(err, user) {
      // The products can be found in the user.products property
      user.products;
    });
});

这正是我要找的!谢谢。