читать только определенные поля в firebase - PullRequest
0 голосов
/ 28 июня 2018

Если у меня есть база данных типа

users: {
  user1: { 
    name:'qwert', 
    id: 123,
    num: 9999 
  },
  user2: { 
    name:'zxcvb', 
    id: 456,
    num: 8888 
  }
}

Как я могу читать только имена всех пользователей?

Мой ожидаемый результат:

{
  user1:{
    name:'qwert'
  }, 
  user2:{
    name:'zxcvb'
  }
}

Если я использую это в JavaScript:

ref('users').once('value').then((snap)=>{console.log(snap.val())})

Я получаю от всех пользователей все эти данные (но мне нужно только имя каждого)

Какие изменения я должен внести в свой запрос, чтобы получить ожидаемый результат?

Любые предложения будут высоко оценены и очень полезны. Я пытался искать в документах, но не получил того, что искал.

Моя конечная цель - сократить расходы на чтение ненужных данных.

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

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

Последнее довольно просто. Если вы хотите загрузить список имен пользователей, вам следует сохранить список имен пользователей в базе данных:

users: {
  user1: { 
    name:'qwert', 
    id: 123,
    num: 9999 
  },
  user2: { 
    name:'zxcvb', 
    id: 456,
    num: 8888 
  }
},
usernames: {
  user1: 'qwert', 
  user2: 'zxcvb'
}

При такой структуре тривиально читать только имена.

Также см .:

0 голосов
/ 28 июня 2018

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

firebase.database().ref().child("users").on("value", function (snapshot) {
  snapshot.forEach(function(childSnapshot) {
   var name=childSnapshot.val().name;
  });
});

Здесь снимок - users, затем вы выполняете итерации внутри user1 и user2, чтобы иметь возможность получить доступ к именам этих пользователей и получить их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...