【问题标题】:Firebase user data after authentication error身份验证错误后的 Firebase 用户数据
【发布时间】:2019-06-05 07:35:35
【问题描述】:

该功能完美运行,但如果我想打印用户的内容,我会在 firebase 日志中收到以下信息:

函数返回未定义、预期的 Promise 或值

函数是:

exports.accountCreate = functions.auth.user().onCreate(user => {
console.log("--->"+user.data);
console.log("ok");
});

为什么 user.data 无法检索到信息?

谢谢

【问题讨论】:

标签: javascript firebase firebase-authentication google-cloud-functions


【解决方案1】:

Cloud Functions 在托管环境中的容器中运行。环境试图最小化它保持容器运行的时间,并且为了能够做到这一点,它必须知道你的函数何时完成。通常在 JavaScript 代码中是在最后一个 } 执行后完成的,但是当您还需要考虑异步操作时,这会变得更加复杂。出于这个原因,Cloud Functions 希望您在函数完成时通知它,在 functions.auth.user().onCreate 的情况下,通过返回值或承诺来通知它。

当您显式返回一个值时,很明显该函数已完成。当您明确返回一个承诺时,很明显该函数需要保持活动状态,直到该承诺被解决/拒绝。不返回值时,不清楚函数处于什么状态。

在您的情况下,修复很简单,例如,您只需在最后一个 } 之前使用 return true

exports.accountCreate = functions.auth.user().onCreate(user => {
  console.log("--->"+user.data);
  console.log("ok");
  return true;
});

顺便说一句,实际值没有意义,return null 也可以。

【讨论】:

  • 谢谢,我解决了这个问题,但我发现 user.data 给我的结果就像未定义...我知道为什么...
猜你喜欢
  • 1970-01-01
  • 2017-06-18
  • 2020-12-03
  • 1970-01-01
  • 2021-12-19
  • 1970-01-01
  • 2021-07-31
相关资源
最近更新 更多