Firebase Firestore FCM邮件发送问题

时间:2017-10-24 13:03:47

标签: javascript firebase firebase-cloud-messaging google-cloud-firestore

我的代码:

Timeout was reached

错误:

  

获取文档时出错TypeError:   event.data.ref.set(...)。sendToDevice不是函数
      在db.collection.doc.get.then.then(/user_code/index.js:117:50)
      at process._tickDomainCallback(internal / process / next_tick.js:135:7)

1 个答案:

答案 0 :(得分:2)

此处涉及两个单独的Firebase产品:

  1. Cloud Firestore,您可以为用户设置FCM令牌。
  2. Cloud Messaging Admin SDK,用于send notifications to a user
  3. 管理SDK for Cloud Messaging上存在sendToDevice方法,而不是您尝试调用它的Firestore数据库引用。

    要解决此问题,您首先需要将Admin SDK导入index.js

    const admin = require('firebase-admin');
    admin.initializeApp(functions.config().firebase);
    

    然后修改第1步和第2步的功能。它应该如下所示:

    // Load the tokens from Firestore
    db.collection('fcmTokens').doc('token_id').get().then((doc) => {
        console.log(doc.id, '=>', doc.data());
        const data = doc.data();
        token = data.token;
        console.log("token", token);
    
        const payload = {
              notification: {
                title: 'hello',
              }
            };
    
        return admin.messaging().sendToDevice(token, payload)
    })
    .catch((err) => {
        console.log('Error getting documents', err);
        return err;
    });