Javascript 从另一个表获取ID数组的值
我是node和noSQL数据库的新手,在理解如何传递id数组以及如何使用另一个表中的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
{
"_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;
});
});
这正是我要找的!谢谢。