我的购物车中有产品,可以在结帐时将其转换为订单。我希望将购物车集合中的所有文档映射为单个文档中订单集合中的对象映射/数组。
function placeOrder(){
var uid = auth.currentUser.uid
db.collection('users').doc(uid).collection('carts')
.get().then((items)=>{
items.forEach((item)=>{
var item_key = item.id
db.collection('users').doc(uid).collection('orders').doc().set({
items : [item_key]
})
db.collection('users').doc(uid).collection('carts').doc(item_key).delete()
})
})
}
答案 0 :(得分:1)
...
.get()
.then(snapshot => {
const ids = snapshot.docs.map(doc => doc.id)
db.collection('users')
.doc(uid)
.collection('orders')
.doc()
.set({items : ids})
}
...
.get()
.then(snapshot => {
const batch = db.batch()
const orderRef = db.collection('users').doc(uid).collection('orders').doc()
const cartRef = db.collection('users').doc(uid).collection('carts').doc(item_key)
batch.set(orderRef, {
// order fields
})
snapshot.forEach(docSnap => {
batch.set(orderRef.collection('order_items').doc(docSnap.id), {
// order item fields
})
})
batch.delete(cartRef)
batch.commit()
}