Облачная функция OneSignal & Firebase - возвращает неопределенное, ожидаемое обещание или значение - PullRequest
0 голосов
/ 25 января 2020

Я пытаюсь использовать облачную функцию для запуска уведомления pu sh при создании нового документа сообщения чата в Firestore.

Я также использую OneSignal, как показано в коде ниже. Однако облачная функция продолжает жаловаться, что моя функция не возвращает обещание или значение, и я не уверен, какую функцию здесь вернуть. Куда и что мне вернуть?

exports.newChatNotification = functions.firestore.
document('channels/{userId}/thread/{docId}').
onCreate((snap, context) => {

  // Get the values of the newly created document
  const newValue = snap.data();

  // Access the "content" field
  const content = newValue.content;
  console.log(content);

  // Access the "userID" field
  const userID = newValue.userID;
  console.log(userID);

  const docId = context.params.docId;
  console.log(docId);

  // OneSignal notification sending
  var sendNotification = function(data) {
    var headers = {
      "Content-Type": "application/json; charset=utf-8",
      "Authorization": "{Authorization token}"
    };

    var options = {
      host: "onesignal.com",
      port: 443,
      path: "/api/v1/notifications",
      method: "POST",
      headers: headers
    };

    var https = require('https');
    var req = https.request(options, function(res) {  
      res.on('data', function(data) {
        console.log("Response:");
        console.log(JSON.parse(data));
      });
    });

    req.on('error', function(e) {
      console.log("ERROR:");
      console.log(e);
    });

    req.write(JSON.stringify(data));
    req.end();
  };

  var message = { 
    app_id: "APP_ID",
    contents: {"en": content},
    include_player_ids: ["PLAYER_ID_1", "PLAYER_ID_2"]
  };

  sendNotification(message);

});

1 Ответ

1 голос
/ 25 января 2020

Облачные функции требуют, чтобы вы возвращали обещание, которое разрешается, когда вся асинхронная работа завершена в вашей функции. Именно так вы сообщаете Cloud Functions, что можно очистить и прекратить работу функции. Это не является обязательным - если вы не вернете обещание правильно, как это, работа может никогда не завершиться, и ваш код просто не будет работать.

Я предлагаю чтение документации об этом и не забудьте понять, как JavaScript обещания работают.

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