Правильное использование hasChild ()и forEach ()из ссылки в Firebase?

С моим ограниченным пониманием и опытом работы с SQL я не совсем понимаю использование hasChild ()и forEach (); они чувствуют, что принадлежат эталону, а не снимку.

(Я буду использовать hasChild ()для остальной части обсуждения, но концепции взаимозаменяемы.)

Вот мои рассуждения:

  1. У меня есть путь Firebase для таблицы пользователей, скажемappname/users
  2. Я хочу посмотреть, существует ли пользователь (Fred )
  3. Я получаю ссылку:var users = new Firebase('appname/users')

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

users.child('Fred').once('value', function(snapshot) {
   /** waits around forever if Fred doesn't exist */
});

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

var users = new Firebase('http://.../appname/users');
users.once('value', function(snapshot) { 
      snapshot.childExists('Fred', function(exists) { 
         /* do something here*/ 
      }); 
   });

Я не думаю, что получаю большие накладные расходы, извлекая appname/usersна основе документов, но это выглядит как неприглядный кусок кода, если я просто хочу определить, существует ли ключ «Фред».

Я хотел бы увидеть что-то вроде:

var users = new Firebase('http://.../appname/users');
users.hasChild('Fred', function(exists[, snapshotOfFred]) { 
   /* do something here*/ 
});

Есть ли лучший подход к использованию forEach/hasChild? Я пропустил какие-либо важные логические соображения здесь?

8
задан Kato 10 July 2012 в 19:39
поделиться