我在制作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/

10-10 20:48
查看更多