ОШИБКА Неожиданное выражение функции при "развертывании firebase" - PullRequest
0 голосов
/ 07 февраля 2019

Я использую React-Native и Expo.Я делаю Push-уведомления для моего приложения.Когда пользователь получает новое задание, он будет показывать уведомление по экспозиции.

Это код для Firebase index.js

const functions = require('firebase-functions');
var fetch = require('node-fetch')



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

//send the push notification 
exports.sendPushNotification = 
functions.database.ref('Task/').onCreate(event => {

const root = event.data.ref.root
var messages = []

//return the main promise 
return root.child('/users').once('value').then(function (snapshot) {
    snapshot.forEach(function (childSnapshot) {

        var expoToken = childSnapshot.val().expoToken;

        messages.push({
            "to": expoToken,
            "sound": "default",
            "body": "New Task Added"
        });
    });
    //firebase.database then() respved a single promise that resolves
    //once all the messages have been resolved 
    return Promise.all(messages)

})
    .then(messages => {
        // console.log(messages)
        fetch('https://exp.host/--/api/v2/push/send', {
            method: 'POST',
            headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json',
            },
            body: JSON.stringify(messages)

        });
    })
    .catch(reason => {
        console.log(reason)
    })


});

Я получил следующую ошибку, когда ясделать "развертывание базы огня"

enter image description here

Может кто-нибудь, пожалуйста, любезно помогите мне, спасибо.

1 Ответ

0 голосов
/ 07 февраля 2019

Глядя на сообщения об ошибках, кажется, что ошибка происходит из-за того, что вы ничего не возвращаете в следующем then:

.then(messages => {
        // console.log(messages)
        fetch(...);
})

Я никогда не использовал выборку узлов, но на основев документации кажется, что вам просто нужно вернуть обещание, возвращенное fetch(), следующим образом:

.then(messages => {
        // console.log(messages)
        return fetch(...);
})

Обратите внимание, что это важно не только с точки зрения eslint, но и для правильного выполнения вашего облакаФункция.Я бы посоветовал вам посмотреть 3 видео о «Обещаниях JavaScript» из серии видеороликов Firebase: https://firebase.google.com/docs/functions/video-series/


Наконец, обратите внимание, что eslint также предупреждает вас о , используя функции стрелок для обратных вызовов.

Вы можете адаптировать следующий фрагмент кода

return root.child('/users').once('value').then(function (snapshot) {})

к

return root.child('/users').once('value').then(snapshot => {})

То же самое для snapshot.forEach(function (childSnapshot) {}).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...