函数返回未定义,预期承诺或价值动机

时间:2018-02-25 19:16:35

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

嗨这个firebase函数用于工作,但知道它现在更长时间工作,我收到此错误消息

  

函数返回未定义,预期的Promise或value

exports = module.exports = functions.analytics.event('first_open').onLog((event) => {
  const payload = {
    notification: {
      title: 'you have a new user \uD83D\uDE43',
      body: event.data.user.deviceInfo.mobileModelName + ' from ' + event.data.user.geoInfo.city + ', ' + event.data.user.geoInfo.country,
      sound:"default",
      vibrate:"true"
    },
  };
   admin.messaging().sendToDevice(deviceToken, payload);
});

2 个答案:

答案 0 :(得分:3)

改变这个:

   admin.messaging().sendToDevice(deviceToken, payload);

到此:

  return admin.messaging().sendToDevice(deviceToken, payload);

答案 1 :(得分:2)

在firebase函数中,您应该返回Promise或值。如果您的功能已经完成,您可以返回一个值。如果您的工作仍在进行中,您必须返回一个Promise,一旦工作完成就应该解决。

在您的方案中,您在方法结束时没有完成admin.messaging().sendToDevice(deviceToken, payload);。因此,您应该返回一个工作完成后解决的承诺。幸运的是admin.messaging().sendToDevice(deviceToken, payload);本身会返回一个承诺。所以你可以从函数中返回它,如下所示。

return admin.messaging().sendToDevice(deviceToken, payload);