前提・実現したいこと
firebase cloud functions上でtypescriptを用いて開発しています。
どちらも不慣れな為に下記処理をどう実装すれば分からず質問します。
cloud functions上でfirestoreを捜査し、documentを見つけたらupdateしてtrueを返す、見つからなかったら何もせずfalseを返す事を想定しています。しかしresult変数のスコープがfirestoreの捜査処理内に及ばない為に必ずfalseが返る状態です。
該当のソースコード
typescript
1function updateByTime(): boolean { 2 const targetTime = new Date() 3 targetTime.setMinutes(targetTime.getMinutes() - 10) 4 5 const refs = fireStore.collection('users') 6 .where('createAt', '>=', targetTime) 7 8 let result = false 9 refs.get().then(docs => { 10 docs.forEach(doc => { 11 doc.ref.update({ 12 updateAt: admin.firestore.FieldValue.serverTimestamp() 13 }) 14 result = true 15 }) 16 }).catch(docs => { 17 console.log(`update error [${docs}]`) 18 }) 19 return result 20}
試したこと
Promiseのユースケースなどを読んでいるのですが元々が同期脳すぎてイマイチ理解できず・・・ズバリ回答を頂けるのもありがたいですが、この辺りの知識を増やすための書籍なども教えて頂けたらとてもありがたいです!
回答1件
あなたの回答
tips
プレビュー