在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不太熟悉。
1条答案
按热度按时间bjp0bcyl1#
我可以通过对代码进行以下更改来使此代码工作:
在上面,我引用了我想要从中获取数据的路径。我需要这样做,因为我正在创建一个新的子
savedUser
并将其添加到根目录。这意味着,当我简单地调用ez("gamertag")
时,代码正在根目录中查找名为gamertag
的内容,但实际上存储在user/gamertag
中,必须通过添加savedUser
节点来进行区分。因此,我需要在代码中更具体地在我的数据库中搜索,并在目录中添加一个新文件,并更完整地键入路径。