我目前有一个用户模型和一个产品型号。我试图将特定产品的ID推送到用户模式中称为产品的数组中。
基本上我正在尝试做这样的事情
router.post('/setproduct', function(req, res) {
var product = new models.Product({
name: req.body.prodName,
price: req.body.price,
color: req.body.color
});
product.save(function(err) {
if (err) {
var error = 'Something bad happened! Please try again.';
res.render('setproduct.jade', { error: error }, {csrfToken: req.csrfToken() });
} else {
/* PUSH PRODUCT.ID TO USER.PRODUCTS ARRAY */
res.redirect('/dashboard');
}
});
});
答案 0 :(得分:1)
您正在寻找的是$push
运营商。
product.save(function(err, doc) {
if (err) {
var error = 'Something bad happened! Please try again.';
res.render('setproduct.jade', { error: error }, {csrfToken: req.csrfToken() });
} else {
var uid = req.user._id;
Users.update({ _id: uid }, { $push: { products: doc._id } }, function(err) {
if (err) // Handle error...
res.redirect('/dashboard');
});
}
});
我假设您可以使用_id
之类的内容访问路线中的用户req.user._id
。
一个友好的建议是你完全跳过Mongoose并使用原始的MongoDB Node.js Driver(docs),因为它更简单,而且MongoDB是无模式的,因此强制执行模式没有多大意义您的收藏品也可能会获得更好的表现。虽然这只是个人偏好所以完全取决于你。