身份验证错误后的 Firebase 用户数据
Posted
技术标签:
【中文标题】身份验证错误后的 Firebase 用户数据【英文标题】:Firebase user data after authentication error 【发布时间】:2019-06-05 07:35:35 【问题描述】:该功能完美运行,但如果我想打印用户的内容,我会在 firebase 日志中收到以下信息:
函数返回未定义、预期的 Promise 或值
函数是:
exports.accountCreate = functions.auth.user().onCreate(user =>
console.log("--->"+user.data);
console.log("ok");
);
为什么 user.data 无法检索到信息?
谢谢
【问题讨论】:
您必须返回一个值,以指示 Cloud Functions 容器何时完成您的函数。在您的情况下,最后可以是一个简单的return true
。见***.com/questions/47128440/…。
【参考方案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 给我的结果就像未定义...我知道为什么...以上是关于身份验证错误后的 Firebase 用户数据的主要内容,如果未能解决你的问题,请参考以下文章
为最终用户处理 Flutter 上的 Firebase 身份验证错误
升级到 Firebase 5 并遇到身份验证问题。无法转换类型“(用户?,错误?)