Vue.jsとFirebaseでチャットアプリを制作しております。
FirebaseのCloud Functionsを使用し、トークルームに新しいメッセージを投稿するとメールに通知を送れるようにしたいです。
受信者のメールアドレスをCloud Firestoreから取得してきたいのですが、以下のコードの一番下の部分で上手く取得できておりません。
何が原因でしょうか?初歩的な質問かもしれませんが、お力を貸して頂けると助かります。
const functions = require('firebase-functions'); const admin = require('firebase-admin'); admin.initializeApp(functions.config().firebase); const db = admin.firestore() const nodemailer = require("nodemailer"); const gmailEmail = functions.config().gmail.email const gmailPassword = functions.config().gmail.password const mailTransport = nodemailer.createTransport({ service: 'gmail', auth: { user: gmailEmail, pass: gmailPassword } }) // トークルームに変更があればメールで通知 exports.sendNotification = functions.firestore .document('talkrooms/{roomId}').onUpdate((change) => { const room = change.after.data(); const chat = room.chat; if(chat.length !== 0){ const newMessage = chat[chat.length-1]; //送信者と受信者のIDを取得 var sendUserID = newMessage.person; var receiveUserId; if(room.member[0].id == sendUserID){ receiveUserId = room.member[1].id; }else{ receiveUserId = room.member[0].id; } //受信者のデータを取得 var receiversData; db.collection('users').doc(receiveUserId).get() .then((doc)=>{ if (doc.exists) { console.log("Document data:", doc.data()); //ここでは正常に表示されます。 receiversData = doc.data(); } }).catch(function(error) { console.log("Error getting document:", error); }); console.log(receiversData); //ここではデータが表示されません。 . . .
回答1件
あなたの回答
tips
プレビュー