我试图将用过的UID添加到实时数据库中,但是当我这样做时,UID又重新定义了,我不确定为什么会这样。
这是我的JS
var userUID;
firebase.auth().onAuthStateChanged(function (user) {
if (user) {
userUID = user.uid;
} else {}
});
//Creating the Database for the Users using realtime mf (SAVE THE DATABSE INFO)
database.ref('users/' + userUID).set({
Name: name,
Email: email,
Password: password,
Industry: industry,
Birthday: birthday
});
这是实时数据库中的输出
谢谢
答案 0 :(得分:1)
正如查理(Charlie)所说,onAuthStateChanged
被异步触发。这意味着您的set()
呼叫当前在设置userUID
之前运行。
通过添加一些适当放置的日志语句,您可以最轻松地看到这一点:
console.log("Starting to listen to auth state");
firebase.auth().onAuthStateChanged(function (user) {
console.log("Got auth state");
});
console.log("Started to listen to auth state");
运行此代码时,输出为:
开始收听身份验证状态
开始收听身份验证状态
获得身份验证状态
这可能不是您期望的,但是它完全解释了为什么您在数据库中获得undefined
。在您运行database.ref('users/' + userUID).set({...
时,尚未设置userUID
。
修复很简单:将需要userUID
的代码移到获取代码的方法中:
var userUID;
firebase.auth().onAuthStateChanged(function (user) {
if (user) {
userUID = user.uid;
database.ref('users/' + userUID).set({
Name: name,
Email: email,
Password: password,
Industry: industry,
Birthday: birthday
});
}
});