Reactjs 每次创建新用户时触发云函数
我正在使用Reactjs 每次创建新用户时触发云函数,reactjs,firebase,firebase-realtime-database,react-redux,firebase-authentication,Reactjs,Firebase,Firebase Realtime Database,React Redux,Firebase Authentication,我正在使用react-redux-firebase框架()。我部署了一个在functions.auth.user().oncreate事件上触发的函数。流程如下: 用户登录 用户的文档是在myusers集合中创建的 函数在google添加的默认字段之上触发并向用户文档追加字段 这是有效的 然后,我在user集合上实现了CRUD函数。当我通过在UI中实现的CRUD函数删除用户文档时,它会成功地从firestore中删除。但是,当我与用户重新登录时,它将重新创建用户文档,但仅使用默认的google字
react-redux-firebase
框架()。我部署了一个在functions.auth.user().oncreate
事件上触发的函数。流程如下:
users
集合中创建的user
集合上实现了CRUD函数。当我通过在UI中实现的CRUD函数删除用户文档时,它会成功地从firestore中删除。但是,当我与用户重新登录时,它将重新创建用户文档,但仅使用默认的google字段,不会再次重新触发该函数
谷歌似乎记得谁以前登录过,而.onCreate
只会在新登录时触发
为了让函数再次触发,我必须进入Firebase仪表板,从身份验证表中删除用户,然后重新登录
我如何确保
.onCreate
将在用户
集合上触发,而不是在firebase身份验证上触发?onCreate
在身份验证触发器的上下文中正常运行。它仅在创建新用户时触发。当您与同一用户重新登录时,不会创建新用户,因此不会触发该功能。您只删除数据库中的用户,而不是firebase身份验证中的用户
如果您希望根据在集合中创建的用户文档触发函数,则需要编写数据库函数。这需要是一个实时DB或firestore触发器,具体取决于用户数据的存储位置
因此,如果您希望每次在firestore中创建用户文档时都触发该函数,它将如下所示:
exports.updateUser = functions.firestore
.document('users/{userId}')
.onCreate((change, context) => {
// Your logic
});
或者,一个实时数据库触发器看起来类似,但您可以用数据库替换firestore。所以
您不仅限于在创建时触发,还可以在更新、写入和删除时触发
以下是有关的文件
以下是上的文档根据您的描述,您并没有删除用户本身,只是删除了存储在Cloud Firestore中的用户数据。当您正确删除一个用户时,它应该触发您所设置的任何设置 要使用客户端代码删除用户,您需要使用:
firebase.auth().currentUser.delete()
.然后(函数(){
console.log(“已成功删除用户”);
})
.catch(函数(错误){
console.log('删除用户时出错',错误);
});
如果要从云功能中删除用户,则应使用:
admin.auth().deleteUser(uid)//是否可以从已删除的文档ID获取uid?
.然后(函数(){
console.log(“已成功删除用户”);
})
.catch(函数(错误){
console.log('删除用户时出错',错误);
});
您想了解如何在向数据库中添加用户数据时触发函数,还是想了解如何从身份验证模块中删除用户?下面提供了这两个问题的答案。请根据您接受的答案编辑此问题的标题,以便将来其他人搜索相同问题时有用。
exports.updateUser = functions.database.ref('users/{userId}')
.onCreate((snap, context) => {
// Your logic
});