我有这个javascript函数,因为我正在制作一个Web应用程序(更喜欢从头开始学习JavaScript)。出于某种原因,数据库永远不会更新,不会引发任何错误,我可以确认string
displayName
等于非空string
。一切都通过,它导航我到我设置为"TO_LOGIIN (ANY URL)"
的网站。没有错误被抛出,没有在我的数据库中填充的东西,但我得到了电子邮件验证,我从updateProfile获得成功状态,以及设置数据的成功状态 - 我是否缺少一些语法?我基本上想要在root/Users/uid
创建一个新的子节点,而不是该节点具有键值Player Name: displayName
- 在这种情况下displayName
等于Test。我觉得这是一个语法问题。
function createUserAccount(email, password, displayName){
firebase.auth().createUserWithEmailAndPassword(email, password).then(function(user) {
//Registration is successful
user.sendEmailVerification();
user.updateProfile({
displayName: displayName
}).then(function() {
//Profile update is successful
var rootRef = firebase.database().ref();
var userId = firebase.auth().currentUser.uid;
var userRef = rootRef.child('Users/' + userId);
userRef.set({
name: displayName,
"Player Name": displayName
}).then(function() {
location.href = "TO_LOGIN (ANY URL)";
}).catch(function(errpr) {
// An error happened.
var errorCode = error.code;
var errorMessage = error.message;
console.log("error code: " + errorCode);
console.log("error message: " + errorMessage);
});
}).catch(function(error) {
// An error happened.
var errorCode = error.code;
var errorMessage = error.message;
console.log("error code: " + errorCode);
console.log("error message: " + errorMessage);
});
}).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
console.log("error code: " + errorCode);
console.log("error message: " + errorMessage);
$("#loginError").show().text(errorMessage);
});
}
以下是我设置的Firebase数据库规则。让我们知道我有一个使用相同数据库的Android和iOS应用程序,我可以调用完全相同的函数来在完全相同的位置创建数据。 编辑,规则:
{
"rules": {
"Users": {
".read": "true",
"$uid": {
".read": "true",
".write": "true",
}
}
}
}
答案 0 :(得分:0)
嗯,我让它工作了 - 我将set
改为update
,现在每次都能完美无瑕地工作。我不确定set
为什么不创建新节点,但update
会...