使用功能日志中的firebase处理通知时出现错误,该如何解决?

时间:2019-03-31 10:52:33

标签: node.js google-cloud-firestore firebase-cloud-messaging google-cloud-functions

我正在使用Flutter构建移动应用程序,我想使其支持自动上推通知,然后使用Firebase云消息传递。 我写的功能:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
//admin.initializeApp();
var msgData;
exports.offerTrigger = functions.firestore.document('requests/{requestId}'
).onCreate((snapshot,context) => {
    msgData = snapshot.data();
    admin.firestore().Collection('pushtokens').get().then((snapshots) => {
        var tokens = [];
        if(snapshots.empty){
            console.log('No devices');
        }
        else {
            for(var token of snapshots.docs){
                tokens.push(token.data().deviceId);
            }
            var payload = {
                "notification" : {
                    "title" : "From" + msgData.Name,
                    "body"  : "Request " + msgData.requestDetial,
                    "sound" : "default"
                },
                "data" : {
                    "SenderName" : msgData.Name,
                    "message"    : msgData.requestDetial
                }
            }
            admin.messaging().sendToDevice(tokens,payload).then((respone) => {
                console.log("pushed them all");
            }).catch((err) => {
                console.log(err);
            });
        }
    })
})

部署功能后,当我添加一些文档时,firebase功能日志中出现错误 错误:

  

TypeError:admin.firestore(...)。集合不是函数

     

在exports.offerTrigger.functions.firestore.document.onCreate(/user_code/index.js:9:23)

     

在cloudFunctionNewSignature(/user_code/node_modules/firebase-functions/lib/cloud-functions.js:114:23)

     

在cloudFunction(/user_code/node_modules/firebase-functions/lib/cloud-functions.js:144:20)

     

在/var/tmp/worker/worker.js:827:24

     

在process._tickDomainCallback(内部/进程/next_tick.js:135:7)

如何解决此错误?

1 个答案:

答案 0 :(得分:0)

更改此:

    admin.firestore().Collection('pushtokens').get().then((snapshots) => {

对此:

   admin.firestore().collection('pushtokens').get().then((snapshots) => {

来自文档:

  

collection(collectionPath)

     

获取一个CollectionReference实例,该实例引用指定路径上的集合。