簡體   English   中英

如何將具有值的集合中的所有文檔以 map firestore web 的形式推送到另一個集合

[英]How to push all the documents in a collection with values to another collection in form of map firestore web

我的購物車中有產品,在結賬時會轉換為訂單。 我希望購物車集合中的所有文檔都映射為單個文檔中訂單集合中的 object map / 數組。

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()
        })       
    })
}

訂單商品 ID => 數組字段:

...
.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()
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM