我在制作Web应用程序时拥有此javascript函数(最好从头开始学习JavaScript)。由于某些原因,数据库永远不会更新,不会引发任何错误,并且我可以确认string
displayName
等于非null 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",
}
}
}
}
最佳答案
好吧,我知道了它的作用-我将set
更改为update
,并且每次都可以正常工作。我不确定为什么set
不会创建新节点,但是update
会创建...
关于javascript - Firebase数据库javascript set()无法编写,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48613710/