2014-02-18 3 views
1

Я делаю приложение в реальном времени с AngularJS и Firebase. Я храню массив данных (игроков). Ниже вы можете увидеть образец моей структуры данных.Firebase получить значение из массива

enter image description here

я могу получить все игроки этой конкретной игре, но как я могу получить, например, игрок «тест»? Ключ представляет собой сгенерированное значение:

Game.find(gameId).child('/players/').push(player); 

Тогда я подумал, почему бы мне не просто «обновление» '/players/'+name и установить там имя. Но к сожалению я получаю обратно объекты внутри объекта:

{ 
    players : { 
    "name":"...", 
    "test":"moretest" 
    } 
} 

я могу получить доступ к этим свойствам, но я не могу цикл над ними, потому что это не массив.

Так что в основном я хочу, чтобы «linq-wise» получал игрока из массива.

Game.find(gameId).child('/players/').where(name == ...); 

Заранее спасибо

Edit:

enter image description here

ответ

3

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

Каждый ключ в Firebase должен иметь значение, так что лучший способ сохранить список игроков, где вы хотите, чтобы они были доступны имя игрок должен просто установить их логическое значение, как «истина»:

Game.find(gameId).child('/players').child(player).set(true); 
+0

Благодарим вас за ответ, см. Мой отредактированный пост. Как вы видите, игрок содержит больше, чем просто имя. В принципе, мне нужно установить для свойства «turn» значение true для первого игрока, найденного в коллекции/players. Но, как я уже сказал, если я пойду искать всех игроков, он не вернет массив. Он возвращает объект с объектами. ng-repeat не работает, и я не знаю, как установить свойство turn для true для первого игрока. – Dieterg

+1

Вы можете использовать ng-repeat с объектами. Используйте 'ng-repeat =" (ключ, значение) в коллекции ''. – Anant

+0

Спасибо, узнал что-то новое! :-) – Dieterg

Смежные вопросы