Firebase数据库javascript set()不写

时间:2018-02-04 22:38:10

标签: javascript firebase firebase-realtime-database firebase-authentication

我有这个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",
      }
    }
  }
}

1 个答案:

答案 0 :(得分:0)

嗯,我让它工作了 - 我将set改为update,现在每次都能完美无瑕地工作。我不确定set为什么不创建新节点,但update会...