正在回答 回答被采纳积分+1
3回答
电磁护盾
2022-07-02 18:22:05
/** * @description 订单数据操作 */ // 引用订单模型 const Order = require('../../models/Order') // 引入地址model const Adress = require('../../models/Address') const Product = require('../../models/Product') // 定义自执行匿名函数 !(async () => { //创建订单 const requestBody = { addressId: '62be4c7b1a01bc4ecf8bd998', shopId: '62bee2b74aa42c8476c08652', shopName: '沃尔玛', isCanceled: false, //订单是否被取消 // 去数据库找沃尔玛的商品 products: [ { id: '62bef44147ee77102dce56e1', // 复制?引用? num: 3 //购买数量 }, { id: '62bef44247ee77102dce56e4', num: 5 //购买数量 } ] } // 通过addressId获取address const adress = Adress.findById(requestBody.addressId) // 根据商品id获取商品信息 // 获取商品列表 // 用数组的map函数可以取出商品id,map函数返回p.id // 会得到一个数组pIds,里面分别是商品1的id,商品2的id const pIds =requestBody.products.map(p => p.id) // ['商品1 id'],['商品2 id'] // 根据商品id去数据库中查找商品列表 const productList = await Product.find({ // 查询条件 shopId: requestBody.shopId, //沃尔玛的商品 // 判断当前查询的商品的_id要在数组pIds中 _id: { $in: pIds } }) // console.log(pIds) // [ '62bef44147ee77102dce56e1', '62bef44247ee77102dce56e4' ] // console.log(productList) //整合订单购买数量 const productListWithSales = productList.map(p => { // 商品 id,获取字符串形式 const id = p._id.toString() // 找到商品的购买数量。 知道商品id,就能找到商品的购买数量 // 把requestBody.products用filter()进行筛选。从数组中找出id(item.id)能等于当前商品id的 const filterProducts = requestBody.products.filter(item => item.id === id) // 如果过滤失败了了 if (filterProducts.length === 0) { throw new Error('未找到匹配的销量数据') } // console.log(p+'<-----------1'); // console.log(filterProducts[0]+'<-----------2'); return { product: p, // mongoose6版本的写法 // product: { // shopId: p.shopId, // name: p.name, // imgUrl: p.imgUrl, // sales: p.sales, // price: p.price, // oldPrice: p.oldPrice // }, orderSales: filterProducts[0].num } }) console.log(productListWithSales); // 创建订单 await Order.create({ // 这里是确定的用户,所以直接写 username: 'zhangsan', shopId: requestBody.shopId, shopName: requestBody.shopName, isCanceled: requestBody.isCanceled, products: productListWidthSales }) })()
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星