Firebase Web - возможно ли получить имя значения? - PullRequest
0 голосов
/ 03 июля 2018

есть ли способ получить имя значения? Например: data image

Я хочу, чтобы имена значений были выделены желтым цветом.

Однако сейчас я могу получить только: web page image

Насколько я понимаю, приведенный ниже код возвращает только значение, которое является результатом игрока.

var childData = childSnapshot.val();

Могу ли я сделать что-то подобное, чтобы получить имя значения?

var childValueName = childSnapshot.val().name;

Это мой код Java:

  function PrintData()
  {
    var ref = firebase.database().ref('Score');
    var PrintData = document.getElementById('PrintOutData');

   ref.on("value", function(snapshot)
   {
     PrintData.innerText = "";
     snapshot.forEach(function(childSnapshot)
     {
       console.log("childSnapshot.key: " + childSnapshot.key);
       var childData = childSnapshot.val();
       let keys = Object.keys(childData)
        keys.forEach(key => {
            let value = childData[key.toString()];
            console.log("value: " + value);
            PrintData.innerText += childSnapshot.key + ": " + value +"\r";
        })
     });
   });
  }

Мой HTML-код:

<button type="button" onclick="PrintData()">Print!</button>

Пожалуйста, поправьте меня, если я ошибаюсь! Thankyou.

Ответы [ 4 ]

0 голосов
/ 03 июля 2018

См. firebase.database.DataSnapshot

ключ (строка или ноль)

Ключ (последняя часть пути) расположения этого DataSnapshot.

Последний токен в базе данных считается его ключом. Например, «ada» является ключом для узла / users / ada /. Доступ к ключу на любом DataSnapshot вернет ключ для местоположения, которое его сгенерировало. Однако доступ к ключу в корневом URL-адресе базы данных вернет null.

// Assume we have the following data in the Database:
{
  "name": {
    "first": "Ada",
    "last": "Lovelace"
  }
}

var ref = firebase.database().ref("users/ada");
ref.once("value")
  .then(function(snapshot) {
    var key = snapshot.key; // "ada"
    var childKey = snapshot.child("name/last").key; // "last"
  });
0 голосов
/ 03 июля 2018

Следующие элементы могут работать для вашей цели:

firebase.database().ref('score').once('value', snap => {
  var data = snap.val() // should return => {User1: {GamePlay00: 3}, User2:
  {GamePlay00: 1}, ...}

  var users = Object.keys('data') should return // => [User1, User2, ...]

  var usersDatas = users.map(user_id => data[user_id]) // should return something like => [{gamePlay00: 3}, {gamePlay00:1}, ...]

  var value = usersDatas.map(game_play_id => game_play_id) // should return => [gamePlay00, gamePlay00...]
})

Пожалуйста, перейдите по этой ссылке для получения дополнительной документации: Object.keys Документы Firebase

0 голосов
/ 03 июля 2018

Я бы использовал Snapshot.forEach() и для нижнего уровня:

var ref = firebase.database().ref('Score');
var PrintData = document.getElementById('PrintOutData');

ref.on("value", function(snapshot) {
  PrintData.innerText = "";
  snapshot.forEach(function(userSnapshot) {
    console.log("childSnapshot.key: " + userSnapshot.key);
    userSnapshot.forEach(function(gameSnapshot) {
      PrintData.innerText += gameSnapshot.key + ": " + gameSnapshot.val() +"\r";
    })
  });
});
0 голосов
/ 03 июля 2018

Firebase имеет хорошую и красивую документацию. Согласно документации firebase , datasnapshot возвращается, когда вы передаете относительный путь к методу child ()

// Assume we have the following data in the Database:
{
 "name": {
 "first": "Ada",
 "last": "Lovelace"
 }
}

// Test for the existence of certain keys within a DataSnapshot
var ref = firebase.database().ref("users/ada");
 ref.once("value")
.then(function(snapshot) {
  var name = snapshot.child("name").val(); // {first:"Ada",last:"Lovelace"}
  var firstName = snapshot.child("name/first").val(); // "Ada"
  var lastName = snapshot.child("name").child("last").val(); // "Lovelace"
  var age = snapshot.child("age").val(); // null
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...