前提・実現したいこと
最後の console.log('isDone : ',isDone); が
markets.forEach(async (aMarket) の終了を待たずに
出力されてしまいます。
markets.forEachのまえにawaitしても変化がありませんでした。
該当のソースコード
typescript
1export const detectBidPrices = 2 functions.firestore.document('{eventId}/combat_data/combat_history/{serialNo}/markets/{market}/bidders/{uid}') 3 .onUpdate(async (change,context) =>{ 4 //BidBook のacceptUsersと markets事にpriceがあるかどうかで判断 5 let eventId = context.params.eventId; 6 let serialNo = context.params.serialNo; 7 let market = context.params.market; 8 let uid = context.params.uid; 9 //let size = (await admin.firestore().collection(eventId+'/combat_data/combat_history/'+serialNo+'/markets/'+market+'/bidders').where('price','>',0).get()).size 10 //console.log('size = ',size); 11 12 let markets; 13 let acceptUsers = 0; 14 await admin.firestore().doc(eventId+'/combat_data/combat_history/'+serialNo).get() 15 .then(async (aDoc) => { 16 acceptUsers = await aDoc.data().acceptUsers; 17 markets = await aDoc.data().markets; 18 }).catch((err) => { 19 console.log('error get joins allUsers'); 20 }); 21 //firebase-debug.logconsole.log(acceptUsers,size); 22 let isDone = true; 23 markets.forEach(async (aMarket) => { 24 let count = 0; 25 await admin.firestore().collection(eventId+'/combat_data/combat_history/'+serialNo+'/markets/'+aMarket+'/bidders').where('price','>',0).get().then( (data) => { 26 count = data.size; 27 console.log('count : ',count); 28 }).catch((err) => console.log(err)); 29 console.log('outside count : ',count); 30 if(count != acceptUsers) isDone = false; 31 32 }); 33 34 35 console.log('isDone : ',isDone); 36 37 return 0; 38});
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/10 07:44
2020/05/10 10:16