猫鼬填充子文档

编程入门 行业动态 更新时间:2024-10-20 04:02:11
本文介绍了猫鼬填充子文档的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我有一个具有subdoc productOrder的orderSchema:

const paymentTrans = require('./PaymentTrans').schema; const productOrder = require('./ProductOrder').schema; const orderSchema = new mongoose.Schema({ orderId: { type: mongoose.Schema.Types.ObjectId }, userId : {type: mongoose.Schema.Types.ObjectId, ref: 'User'}, productOrder: [productOrder], totalPerOrder: {type: Number, default:''}, paymentTrans: [paymentTrans] }, { timestamps: true }); const Order = mongoose.model('Order', orderSchema); module.exports = Order;

porductOrder架构

const productOrderSchema = new mongoose.Schema({ sku: { type: String, default: '' }, name: { type: String, default: '' }, quantity: { type: Number, default: '' }, price: { type: Number, default: '' }, total: { type: Number, default: '' } }); const ProductOrder = mongoose.model('ProductOrder', productOrderSchema); module.exports = ProductOrder;

我希望从order(orderSchema)获得productOrder:

尝试了这些

Order.findById(req.body.id) .exec(function (err, products) { var opts = { path: 'productOrder', model: 'ProductOrder' }; Order.populate(products, opts, function (ree, products) { console.log(JSON.stringify(products)); }); res.render('store/cart', { title: 'MyCart', angularApp: 'storeApp', products: products }); });

其中req.body.id是orderId,console中的object看起来像这样:(对不起,WebStorm不能从控制台复制/粘贴)

Where req.body.id is the orderId and the object in console looks like this: (sorry, WebStorm no Copy/Paste from console)

我尝试的另一种方式

Order.findById(req.body.id, function (err, products) { var opts = [ { path: 'productOrder', model: 'ProductOrder' } ] Order.populate(products, opts, function (err, products) { console.log(products); }) })

还有一个

Order.find({ _id: req.body.id, userId: req.user._id }) .populate({ path: 'productOrder', populate: { path: 'productOrder', model: 'ProductOrder' } }) .exec(function (err, productOrder) { //products.forEach(function(elem){ console.log("products = " + JSON.stringify(productOrder)); //}); console.log("REQ._ID " + req.body.id); res.render('store/cart', { title: 'MyCart', angularApp: 'storeApp', products: productOrder }); });

他们最终都给了我订单的全部doc. 我怎样才能只获得订单产品? (productOrder) 谢谢

They all end up giving me the entire doc of the order. How can I get just the products of the order? (productOrder) Thanx

推荐答案

您可以使用select函数,然后按照以下说明填充

You may use select function and then populate as following

Order.findOne({ _id: req.body.id}) .select('-_id productOrder') .populate('productOrder') .exec(function (err, orderObj) { if(!err) { var productOrder = orderObj.productOrder; //products.forEach(function(elem){ console.log("products = " + JSON.stringify(productOrder)); //}); console.log("REQ._ID " + req.body.id); res.render('store/cart', { title: 'MyCart', angularApp: 'storeApp', products: productOrder }); } });

更多推荐

猫鼬填充子文档

本文发布于:2023-11-22 13:29:08,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1617598.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:文档

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!