前提・実現したいこと
公式サイトを読みながらCloud Functionのコードを書いてみたのですが、上手く動きません。
下記を実現したくコードを書いたのですが、何処がおかしいのか教えていただけますでしょうか。
・firestoreのデータが変更されたら、Cloud Functionを使い、Custom Claimsを変更したい
JavaScript自体が初めてのため、おそらくfirebase関連は関係なく、JavaScriptのミスだと思います。
該当のソースコード
備考
・firestoreにCircleというコレクションがある
・CircleのフィールドにマスターユーザーのIDを配列として保存している
・ユーザー(Auth)のCustom ClaimsにCircleのIDを配列として保存している
・マスターユーザーが追加(削除)されたら、該当ユーザーのCustom ClaimsにCircleのIDを追加(削除)したい
exports.circleUpdate = functions.region('asia-northeast1').firestore .document('Circle/{circleId}') .onUpdate((change, context) => { const cid = context.params.circleId; const newValue = change.after.data(); const masters = newValue.master; const previousValue = change.before.data(); const previousMasters = previousValue.master; if (masters.length > previousMasters.length) { // マスター追加 const addMasters = masters.filter(i => previousMasters.indexOf(i) == -1); addCustumClamims(addMasters, cid) }else if (masters.length < previousMasters.length) { //マスター削除 const deleteMasters = previousMasters.filter(i => masters.indexOf(i) == -1); deleteCustumClamims(deleteMasters, cid) }else { // マスターに変更なし } }); function addCustumClamims(masters, cid) { masters.forEach(master => { admin.auth().getUser(master).then((userRecord) => { const oldCircle = userRecord.customClaims['circle']; const newCircle = oldCircle.push(cid); admin.auth().setCustomUserClaims(master, {circle: newCircle}).then(() => { console.log("Successfully add master"); }); }); }); } function deleteCustumClamims(masters, cid) { masters.forEach(master =>{ admin.auth().getUser(master).then((userRecord) => { const oldCircle = userRecord.customClaims['circle']; const newCircle = oldCircle.filter(i => i !== cid); admin.auth().setCustomUserClaims(master, {circle: newCircle}).then(() => { console.log("Successfully delete master"); }); }); }); }
試したこと
Cloud Function自体が初めてのため、簡単な処理でそもそもの環境設定?等が間違えてないかは確認済みです。
補足情報(FW/ツールのバージョンなど)
自分なりに調べてJavaScriptの関数の使い方と非同期処理についてが怪しい部分だと思い勉強していますが、原因や治し方が分からないでいます。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/26 06:12
2020/12/26 12:38
2020/12/26 13:03
2020/12/26 13:17
2020/12/26 13:40