Я получил ошибку при обработке уведомлений с использованием firebase в журнале функций, как я могу это исправить?

#node.js #google-cloud-firestore #firebase-cloud-messaging #google-cloud-functions

#node.js #google-облако-firestore #firebase-cloud-messaging #google-cloud-функции

Вопрос:

Я создаю мобильное приложение с использованием flutter и хочу, чтобы оно поддерживало автоматические push-уведомления, затем я использовал firebase cloud messaging. Функция, которую я написал :

 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
ошибка :

Ошибка типа: admin.firestore (…).Collection не является функцией

в 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

в процессе._tickDomainCallback (internal / process/next_tick.js: 135:7)

Как я могу исправить эту ошибку?

Ответ №1:

Измените это:

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

в это:

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

из документов:

collection(collectionPath)

Получает CollectionReference экземпляр, который ссылается на коллекцию по указанному пути.

Комментарии:

1. Это тот же брат admin.firestore ().Collection (‘pushtokens’).get().then ((снимки) => { в это: admin.firestore ().collection (‘pushtokens’).get().then ((снимки) => {

2. Оно должно быть в нижнем регистре, функция не вызывается Collection() с прописными буквами, измените его на нижний регистр и повторно разверните

3. О боже, большое спасибо, братан, но теперь я получил новую ошибку, возвращающую неопределенное, ожидаемое обещание или значение, но я получил уведомление в своем приложении

4. Добавьте return сюда return admin.messaging().sendToDevice(tokens,payload).then((respone) . Пожалуйста, отметьте мой ответ (нажав на галочку «Сделать» рядом с ним) как правильный, поскольку он вам помог

5. Спасибо тебе от всего сердца, брат, да благословит тебя Бог