如何使用JavaScript在Firebase Auth中获取特定用户数据对象
如何使用JavaScript在Firebase Auth中获取特定用户数据对象
我需要使用JavaScript通过用户ID(UID)在Firebase身份验证中获取特定用户数据。如果不能通过ID获取用户,至少有没有一种方法可以获取所有用户,然后我可以循环遍历这些用户,并检查用户的ID是否等于该ID。这是可能的吗?
问题出现的原因是,用户在Firebase Authentication中更改了displayName,但是在Firebase Firestore Collection中的相应数据没有得到更新。原因可能是为了安全考虑,Google没有提供这样的解决方案。此外,Firebase还提供了ADMIN SDK,这使得用户管理变得更加复杂。因此,我们需要找到一种解决方案来处理用户数据的更新和删除。
解决方法是创建一个名为"users"的额外集合,将所需数据存储在其中,并将文档的id与auth uids同步。通过这种方式,可以在Firebase Authentication和Firebase Firestore之间保持数据的同步。对于更新用户数据,可以使用以下方法:
// 获取当前用户的uid var user = firebase.auth().currentUser; var uid = user.uid; // 在"users"集合中查找具有相同uid的文档 var userRef = firebase.firestore().collection("users").doc(uid); // 更新文档中的displayName字段 userRef.update({ displayName: "New Display Name" }) .then(function() { console.log("User data updated successfully"); }) .catch(function(error) { console.error("Error updating user data: ", error); });
对于通过管理员删除用户的情况,可以使用以下方法:
// 获取要删除的用户的uid var uid = "user-uid-to-delete"; // 删除"users"集合中具有相同uid的文档 firebase.firestore().collection("users").doc(uid).delete() .then(function() { console.log("User data deleted successfully"); }) .catch(function(error) { console.error("Error deleting user data: ", error); });
通过这些方法,可以在Firebase中使用JavaScript获取特定用户数据对象,并更新或删除该数据。