为什么函数(事件)运行两次?

时间:2019-01-23 08:11:54

标签: node.js firebase firebase-realtime-database google-cloud-functions

我只想使用“ functions.auth.user()。onCreate()”事件处理程序访问一次外部One信号服务器。

但是以某种方式,事件运行两次。 有人告诉我我在这里想念的是什么,我该怎么做。

问题代码如下。...

exports.deviceRegister = functions.auth.user().onCreate(event => {

  const user = event.uid;
  const deviceToken = db.ref(`/Users/${user}/deviceToken`);

  // below event seems to be triggered twice        
  deviceToken.on("value", function(snapshot) {
    var request = require("request");

    var options = { 
      method: 'POST',
      url: 'https://onesignal.com/api/v1/players',
      headers: { 
        'cache-control': 'no-cache',
        'Content-Type': 'application/json' 
      },
      body: { 
        app_id: '**************42249fa65d',
        identifier: snapshot.val(),
        language: 'en',
        timezone: -28800,
        game_version: '1.0',
        device_os: '7.0.4',
        device_type: 0,
        device_model: 'iPhone',
        tags: { a: '1', foo: 'bar' }
      },
      json: true 
    };

    request(options, function (error, response, body) {
      if (error) throw new Error(error);
      // this console.log runs twice
      console.log(body);
    });
  },
  function(errorObject) {
    console.log("The read failed: " + errorObject.code);
  });
})

非常感谢您的帮助和支持。

0 个答案:

没有答案