我设计的拼团功能数据结构,团长(Leader)和团员(Member)都生成了独立的订单号(在同一个集合里‘groupOrder’)。
团员在下单时会关联了团长的订单(ID)。
我现在想把每个团长及团员的订单筛选出来放到一个新数组里面。
[{
团长A: '',
团员[{
团员A: '',
}, {
团员B: '',
}]
}, {
团长B: '',
团员[{
团员A: '',
}, {
团员C: '',
}]
}]
云函数,查询‘Leader._id’,并通过‘addFields()函数’新建了一个数组‘memberOrder’,再通过查询到的‘Leader._id’,继续查询符合条件的‘member’订单,并把查询结果push到新数组‘memberOrder’,但返回结果null
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
const req_type = event.req_type
switch (req_type) {
case "Member":
return memberCheck();
default: {
return
}
}
function memberCheck() {
const memberOrder = []
return dbRes.match({
shopID: event.shopID,
orderType: 'Leader'
}).addFields({
memberOrder: memberOrder
}).end()
.then( res => {
console.log(res);
const leaderOrder = res.data
for (let i = 0; i < leaderOrder.length; i++) {
const orderID = leaderOrder[i]._id;
return db.collection('groupOrder').where({
orderID: orderID
}).get()
.then( res => {
const member = res.data
for (let j = 0; j < member.length; j++) {
const tempObj = member[j];
memberOrder.push(tempObj)
}
return res
})
}
return res
}).catch( err => {
console.log(err);
})
}
}
你写的什么嘛
1、你addFields一个空数组字段,想干什么
2、最下面有只对memberOrder赋值,而不是res.data里的memberOrder,数据自己会进到res.data里的memberOrder?
3、多个res,你知道自己要的是哪个res吗
说到底还是不会用Promise
再好好学学吧
return db.collection('groupOrder').where({
shopID: event.shopID,
orderType: 'Leader'
}).get()
.then( res => {
console.log("团长订单:", res.data);
const leaderOrder = res.data
for (let i = 0; i < leaderOrder.length; i++) {
const orderID = leaderOrder[i]._id;
return dbRes.match({
orderID: orderID,
orderType: 'Member'
}).end()
.then( mb => {
console.log("团员订单:", mb.list);
const member = mb.list
return member
})
}
return res
}).catch( err => {
console.log(err);
})
可能是异步的问题。