Не удалось развернуть облачную функцию Firebase из-за ошибки с ошибкой JSON.stringify () - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь развернуть облачную функцию для моего собственного собственного реагирующего приложения, которое отправляет пользователям уведомление при появлении нового узла в базе данных.Для этого я использую Push API Expo, как показано здесь: https://docs.expo.io/versions/v32.0.0/guides/push-notifications и следую учебному пособию, доступному здесь: https://www.youtube.com/watch?v=R2D6J10fhA4

Мне удалось получить токены устройства и сохранить их вмоя база данных просто отлично.Однако я не могу развернуть функцию в своей базе данных из-за ошибки, которая говорит:

31: 27 Ошибка синтаксического анализа: неожиданный токен, ожидаемый,

Выдает фатальную ошибку пристрока 'body: JSON.stringify (messages)', как будто она ожидает запятую сразу после 'stringify'.Я очень не уверен, как поступить отсюда, и не могу найти никаких сообщений, посвященных этой конкретной проблеме.

Любая помощь и / или совет приветствуются!Спасибо.

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

let fetch = require('node-fetch');

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

exports.sendPushNotification = functions.database.ref('Omicron-Pi')
.onCreate(event => {
  const root = event.data.ref.root;
  let messages = [];

  root.child('Omicron-Pi/profiles').once('value').then((snapshot) => {
    snapshot.forEach((childSnapshot) => {
      let pushToken = childSnapshot.val().pushToken;
        if (pushToken) {
          messages.push({
            to: pushToken,
            body: 'New Node added'
          });
        }
    });
    return Promise.all(messages);
  }).then(messages => {
    fetch('https://exp.host/--/api/v2/push/send', [
      method: 'POST',
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json',
      },
      body: JSON.stringify(messages)
    ]);
  });
});

1 Ответ

0 голосов
/ 21 января 2019

Второй аргумент fetch() - это объект со свойствами инициализации, но вы передаете массив.

Чтобы исправить это, используйте {} вместо []:

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

Чтобы узнать больше, прочитайте документацию о том, как использовать выборку в MDN .

...