2016-05-21 5 views
0

Я реализую простую игру в facebook и выбрал firebase как BAAS, который выглядит действительно круто и легко использовать. Но я встал, чтобы задать вопрос, на который было нелегко найти. Так вот оно.Множественный выбор для firebase

Мне нужно, чтобы друзья показывали друг другу друг друга. Нравится, если у userA есть друзья1 и друзья2 в facebook, пользователь может видеть friend1 и friend2 прогрессирует.

Структура что-то вроде.

users/userA 
    { 
     progress : 'some progress' 
    } 

users/friend1 
    { 
     progress : 'some other progress' 
    } 

users/friend2 
    { 
     progress : 'progress again' 
    } 

Так я получаю «friend1» и «» friend2 от Facebook, и теперь мне нужно, чтобы получить их прогрессирует от firebase.

Невозможно получить данные по одному запросу? Должен ли я сделать

`curl 'https://project-xxx.firebaseio.com/users.json?equalTo="FRIEND_NAME"'` 

для каждого друга?

ответ

1

Добро пожаловать в Firebase.

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

Возможно, вы захотите рассмотреть возможность использования Firebase для тяжелого подъема; когда прогресс пользователя будет изменяться, пусть Firebase расскажет вам об этом, а не опросе для этого изменения.

Это достигается путем установки наблюдателя на каждом узле друзей (или всех узлов и фильтра в коде). Когда изменения будут отслеживаться пользователями, ваше приложение будет уведомлено.

на основе вашей firebase структуры, вот пример, в Swift:

let thisUserRef = self.usersRef.childByAppendingPath("friend1") 
//you could add observers for friend2, friend 3 etc 

thisUserRef.observeEventType(.ChildChanged, withBlock: { snapshot in 
    let progress = snapshot.value["progress"] as! String 
    print(progress) 
} 

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

Вы можете экстраполировать этот уровень на уровень и наблюдать за узлом/users в целом. При этом все изменения в пользовательском доступе доставляются в ваше приложение, и вы можете отфильтровывать те, которые не находятся в списке друзей пользователя A.

Это больше данных, но это может поместиться в ваш прецедент.

Руководства по запуску Firebase, которые содержат большие примеры того, как это сделать, но я больше не вижу этих примеров. Возможно, Firebaser может предоставить ссылку на текущие примеры кода.

+0

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

+0

Мое удовольствие. Если это поможет, не забудьте принять ответ! – Jay