2017-12-23 11 views
2

Firestoreトランザクションで複数の取得を実装する方法は誰でも知っていますか?複数の取得を実装するFirestoreトランザクション

Firestoreに保存されている未知の長さのFirestore Referencesの配列があります。各参照には{count:number}が含まれていますが、それぞれの参照に1つずつ追加したいだけです。これを行うために、私はトランザクションを使用する必要があると確信しています。ドキュメントでは複数の取得を使用できると言われていますが、実装方法はわかりません。

私はそれぞれの参照を取得し、既存のカウントを配列に格納し、それぞれを1つずつ追加してFirestoreにすべて保存する必要があると思います。私はこれを実装しようとするたびに失敗します。 Firestoreトランザクションで複数の取得を使用する例は、おそらく私が行かなければならないすべてのものですが、ドキュメントには存在しません。

答えて

2

あなたはarrayOfReferencesの各firestore参照を反復処理する必要があるので、あなたは、Promise.allを使用する必要があります。

私はあなたのための例を作り、それをテストし、すぐ下のコードは、次のとおりです。カウンターはあなたがdocumentationを読むことができ、Firestoreでどのように機能するかについての詳細を知るために

setCount(arrayOfReferences){ 
    return this.db.runTransaction(t => { 
    return Promise.all(arrayOfReferences.map(async (element) => { 
     const doc = await t.get(element); 
     const new_count = doc.data().count + 1; 
     await t.update(element, { count: new_count }); 
    })); 
    }); 
} 

関連する問題