Ошибка типа: admin.messaging.sendToTopic не является функцией - PullRequest
0 голосов
/ 16 сентября 2018

Я занимаюсь разработкой приложения для Android, в котором у меня есть Activity, OperatorActivity. Он имеет CardNo и LineNo в качестве EditText, и эти значения вставляются в FirebaseDatabase.

Я хочу уведомить каждого пользователя, у которого установлено это приложение, об обновлении с помощью FCM. Я использовал Note.js и создал для этого функцию, но каждый раз возникает ошибка:

TypeError: admin.messaging.sendToTopic is not a function
at exports.sendNotification.functions.database.ref.onWrite.event (/user_code/index.js:18:21)
at cloudFunctionNewSignature (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:105:23)
at cloudFunction (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:135:20)
at /var/tmp/worker/worker.js:733:24
at process._tickDomainCallback (internal/process/next_tick.js:135:7)

Я новичок в функциях, поэтому не могу понять, как решить эту ошибку. Я уже посмотрел похожие вопросы, но никто не решил мою проблему.

index.js

const functions = require('firebase-functions');
const admin = require('firebase-admin');

admin.initializeApp(functions.config.firebase);

exports.sendNotification = functions.database.ref("Operator :")
.onWrite(event =>{
    var payload = {
        notification :{
            title : 'Mechanic Needed',
            body: 'Any available mechanic report ASAP',
            sound: 'defaulf',
            badge: '1'
        },
        topic: 'notification'
    };

    admin.messaging.sendToTopic('notification',payload)
    .then(function(response){
        console.log("Successfully sent Message.", response);
        return;
    })
    .catch(function(error){
        console.log("Error sending message!", erorr);
    })
    
});

Я подписал всех пользователей на тему «уведомлений» программно.

Так выглядит база данных: Это фиктивная база данных.

enter image description here

firebase - версия: 4.2.1

npm - версия: 6.4.1

РЕДАКТИРОВАТЬ: Это работает сейчас.

const functions = require('firebase-functions');
const admin = require('firebase-admin');

admin.initializeApp(functions.config.firebase);

exports.sendNotificationToUsers = functions.database.ref("Operator :")
.onWrite(event =>{
    var payload = {
        notification: {
                title : 'Mechanic Needed',
                body: 'Any available mechanic report ASAP',
                sound: 'defaulf'
            }
    };

    admin.messaging().sendToTopic('notification',payload)
    .then((response) => {
        console.log("Successfully sent Message.", response);
        return;
    })
    .catch((error) => {
        console.log("Error sending message!", error);
    })
    
});

1 Ответ

0 голосов
/ 16 сентября 2018

Вместо этого:

admin.messaging

Вам необходимо использовать это (обратите внимание на документацию API, что это функция для вызова ):

admin.messaging()

См. Также документацию для отправки в тему. . Это показывает то же использование.

...