javascript Firebase未创建新的指定终结点

yquaqz18  于 2023-04-28  发布在  Java
关注(0)|答案(1)|浏览(134)

在Firebase数据库中创建和写入新端点时遇到困难。我尝试做的是创建一个名为savedUser的新子节点,并将现有user节点的当前内容推送到新创建的端点。
下面是我使用的代码:

// this is the initial search that sets the data in the user
// endpoint
$("#searchButton").on("click", function(){
​
    firebase.database().ref().once("child_added", function(snapshot){
    // little lesson in closure
    // dry coding
    function ez(path){
      return snapshot.child(path).val();
    }
​
    var dataObject = { 
      gamertag: ez("gamertag"),
      totalKills: ez("totalKills"),
      totalDeaths: ez("totalDeaths"),
      totalGames: ez("totalGames")
    };
    //handlebars, getting template
    var sourceTemplate = $("#list-template").html();
​
    var template =  Handlebars.compile(sourceTemplate);
    //handlebars, sending object to DOM
    var templateHTML = template(dataObject);
​
    var $templateHTML = $(templateHTML);
​
    $("#profileSearch").append($templateHTML);
    
​
  });
  
});
​
var $confirmButton = $("#confirmButton");
​
// This is supposed to fire when the "save" button is clicked
$(document).on("click", "#confirm", function(event){
  event.preventDefault()
  // referencing database again to iterate and capture value
  firebase.database().ref().once("value", function(snapshot){
    function ez(path){
      return snapshot.child(path).val();
    }
    // same procedure so far
    var savedUserData = {
      gamertag: ez("gamertag"),
      totalKills: ez("totalKills"),
      totalDeaths: ez("totalDeaths"),
      totalGames: ez("totalGames")
    }
    
    function saveUser(newChildPath, data){
      firebase.database().ref(newChildPath).set(data)
    }
    // call the function saves at the endpoint "savedUser" 
    saveUser("savedUser/", savedUserData);
​
​
  });
});

上面的代码没有写入我的数据库,但根据我一直在看的指南,我应该成功地做到这一点。但是这会写入我的数据库:

function saveUser(childPath, data){
      firebase.database().ref(childPath).set(data)
    }
    saveUser("savedUser/", {new: "path"});

  });
});

在我的数据库控制台上,我可以找到“/savedUser/new”,它更新没有问题。但是当我试图从数据库中捕获数据并像第一个例子那样格式化它时,它不起作用,什么也没写。实际上,savedUser端点被擦除。我肯定漏掉了什么细节。我对Firebase不太熟悉。

bjp0bcyl

bjp0bcyl1#

我可以通过对代码进行以下更改来使此代码工作:

var savedUserData = {
  gamertag: ez("user/gamertag"),
  totalKills: ez("user/totalKills"),
  totalDeaths: ez("user/totalDeaths"),
  totalGames: ez("user/totalGames")
}

在上面,我引用了我想要从中获取数据的路径。我需要这样做,因为我正在创建一个新的子savedUser并将其添加到根目录。这意味着,当我简单地调用ez("gamertag")时,代码正在根目录中查找名为gamertag的内容,但实际上存储在user/gamertag中,必须通过添加savedUser节点来进行区分。因此,我需要在代码中更具体地在我的数据库中搜索,并在目录中添加一个新文件,并更完整地键入路径。

相关问题