2016-06-28 2 views
0

Добрый день. У меня возникают трудности с созданием и записью в новую конечную точку в базе данных firebase. То, что я пытаюсь сделать, - создать новый дочерний узел под названием savedUser и нажать на эту вновь созданную конечную точку текущее содержимое моего существующего узла user. Вот код, я использую:Firebase, не создающий новую указанную конечную точку

// 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/новый» и не обновляет никаких проблем. Но когда я пытаюсь захватить данные из базы данных и форматировать их, как в первом примере, это не работает, и ничего не написано. Фактически конечная точка savedUser стирается. Должна быть тонкость, которую мне не хватает. Я не хорошо разбираюсь в Firebase. Любая помощь приветствуется и дайте мне знать, если я могу предоставить дополнительную информацию.

Спасибо!

+0

Возможно, Firebase не любит это форматирование 'gamertag: ez (" gamertag "),' для свойств объекта? Кроме того, попробуйте включить только соответствующий код, то есть зачем рассказывать нам о Handlebars? –

+0

Каковы значения в 'savedUserData'? Неужели все они оказались пустыми? Это действительно минимальный код, необходимый для воспроизведения проблемы? Похоже, что набор проблем можно упростить. Кроме того, включите отладку: 'firebase.database.enableLogging (true);' – Kato

+0

@Ursus @Kato Мне удалось заставить его работать, изменив пути в 'savedUserData' на что-то вроде' 'user/gamertag'', например и тогда все было отправлено, как и должно было быть. Спасибо за предложения. – m00saca

ответ

0

Я был в состоянии получить этот код работает путем внесения следующих изменений в коде следующим образом:

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. Поэтому мне нужно быть более конкретным в коде, где в моей базе данных я ищу с добавлением нового файла в каталог и более подробно изложу пути.

Смежные вопросы