Различия между 'child_added' и 'value' firebase?

Я вижу небольшую разницу междуchild_added а такжеvalue при возврате данных в firebase. С помощьюvalue Я могу проверить, еслиsnapshot.val() возвратил что-то или не использовал это так:

Получение данных:

ref.orderByChild('appUserName')
    .equalTo(issuer)
    .once('value')
    .then(function (snapshot) {
      var value = snapshot.val();
      if (value) { 
          // Has Value...
      }else{
          //Has No Value...
      }

Структура данных:

AppUsers --
    234jl23jl4kj23 --
        data --
            //.. data
        userName : "testUser1",
        userPass: "password123"
    9873h23foiu34u
        //same structure
    o8987s52df134o
        //same structure

Если яconsole.log как значение вернулосьsnapshot.val() возвращает данные на уровне сгенерированного ключа:

{234jl23jl4kj23 --
    {data --
        //.. data
    userName : "testUser1",
    userPass: "password123"}}

Если я получу данные, используяchild_added:

ref.orderByChild('appUserName')
    .equalTo(issuer)
    .once('child_added')
    .then(function (snapshot) {
      var value = snapshot.val();
      if (value) { 
          // Has Value...
      }else{
          //Has No Value...
      }

Это даже не пойдет в.then функционировать, еслиissuer не найден в качестве значения дляappUserName, поэтому я не могу видеть в функции Firebase, получил ли он значение или нет. Также способchild_added получает данные на один уровень глубже. Вместо возврата по сгенерированному ключу он возвращает значения в этом ключе:

{data --
   //.. data
userName : "testUser1",
userPass: "password123"}

Я бы предпочел использовать его таким образом, потому что это был бы на один цикл меньше, который я должен был бы проверить, чтобы сначала получить данные внутри ключа, а затем перебрать объекты в области данных. Однако еслиissuer не вappUserName это не будет входить в функцию для меня, чтобы даже сделатьif else

Есть ли способ, чтобы сверлить так глубоко, какchild_added без зацикливания, но все еще сможет сделатьif else проверить, еслиsnapshot.val() есть что-нибудь?

Ответы на вопрос(1)

Ваш ответ на вопрос