angular - 如何在 localhost 中使用 Angular 和 Cloud Firebase 功能
问题描述
我在 localhost 中使用 Angular 和 firebase 函数时遇到问题。我想要的是如果用户删除他的帐户,那么firebase函数应该做出反应(比如删除firestore db中已删除用户的所有内容)。例如:
角度:
public deleteAccount(): Promise<void> {
return this.angularFireAuth.auth.currentUser.delete().then(() => {
const test = this.angularFireFunctions.httpsCallable('httpFunction');
test(null).subscribe((response) => {
debugger;
}, (error) => {
debugger;
});
}).catch((error) => {
this.uiService.showSnackBar(error.message, 'error-snackbar');
});
}
功能:
export const httpFunction = functions.https.onRequest((req, res) => {
cors(req, res, () => { // need cors, because of error in console
return functions.auth.user().onDelete((user: admin.auth.UserRecord) => {
return res.status(200).send(user.uid);
});
});
});
但是即使我使用这样的代码仅用于测试,在删除用户后,也会有一个对 httpFunction 的请求并且没关系,但状态一直是“待定”。
第二件事,在firestore控制台(在功能部分的日志中)有如下信息:
“未配置计费帐户。无法访问外部网络并且配额受到严重限制。配置计费帐户以删除这些限制”
“函数执行耗时 60002 毫秒,以状态完成:‘超时’”
此帐户是免费的,我认为此消息只是一个警报,但无论如何,您知道如何在 Cloud firestore 功能中正确使用 onDelete 吗?
解决方案
我强烈建议您阅读有关后台函数/触发器的 Firebase 文档。onUserDeleted
是一个触发器。
https://cloud.google.com/functions/docs/concepts/events-triggers
**** 这是 TL;DR:****
您不需要通过 https 调用手动触发后台函数,因为它们会自动触发以响应事件。后台函数通过从入口点 (index.(ts|js)) 导出它们来工作。
因此,只需从 index.(ts|js) 导出您的函数并部署它。
export const onUserDeleted = functions.auth.user().onDelete((user: admin.auth.UserRecord) => {
// Delete user in Firestore
// Don't forget to return a Promise!
});
});
});
onUserDeleted
将被解雇以响应删除用户。在你的情况下,调用this.angularFireAuth.auth.currentUser.delete()
Angular。
您可以通过简单地console.log
在 onUserDeleted 回调中使用并在 firebase 控制台中的函数 -> 日志下查看它来测试它。
推荐阅读
- python - tensorflow 和 torch.cuda 可以找到 GPU,但 Keras 不能
- reactjs - 如何配置 webpack 以通过这种方式在 scss 中查找图像: url(a.png) 而不是 url(../../image/a.png)
- regex - Linux:重命名包含大写字母 ASCII 代码的文件
- php - 如何忽略所有进入 Apache 服务器中 RoR 项目的 *.php 请求?
- reactjs - 如何在 React JS 中使用 RSS Feed 获取多个新闻数据
- couchbase - Couchbase 没有可用的索引
- oracle - 如何使用掩码将字符转换为数字
- python - 我的下载功能以固定名称保存文件
- java - Testcontainers - 在实例化过程中不要自动启动容器
- javascript - 确定属性是来自父母还是孩子