【问题标题】:Firebase get value out of arrayFirebase 从数组中获取价值
【发布时间】:2014-02-18 16:57:11
【问题描述】:

我正在使用 AngularJS 和 Firebase 制作一个实时应用程序。我正在存储一组数据(玩家)。 您可以在下面看到我的数据结构示例。

我可以获取该特定游戏的所有玩家,但我如何获取例如玩家“测试”?键是生成的值:

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

然后我想,我为什么不直接“更新”'/players/'+name 并在那里设置名称。但不幸的是,我正在取回对象内的对象:

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

我可以访问这些属性,但我不能遍历它们,因为它不是数组。

所以基本上我想要做的是“linq-wise”从数组中取出一个玩家。

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

提前致谢

编辑:

【问题讨论】:

    标签: angularjs firebase angularfire


    【解决方案1】:

    你在正确的轨道上只存储玩家的名字而不是使用push 来生成一个ID。不过,您需要确保您的玩家名称是唯一的,否则您可能无法容纳两个同名玩家。

    Firebase 中的每个键都必须有一个值,因此,存储玩家列表的最佳方法是让玩家可以通过玩家名称访问这些玩家列表,只需将它们设置为布尔值,例如“true”:

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

    【讨论】:

    • 感谢您的回答,请参阅我编辑的帖子。如您所见,播放器包含的不仅仅是名称。基本上,我需要将 /players 集合中的第一个 Player 的“turn”属性设置为 true。但正如我所说,如果我搜索所有玩家,它不会返回一个数组。它返回一个带有对象的对象。 ng-repeat 不起作用,我不知道如何将第一个玩家的“turn”属性设置为 true。
    • 您当然可以对对象使用 ng-repeat。使用ng-repeat="(key, value) in collection"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-09
    • 2018-06-23
    • 1970-01-01
    • 2017-09-07
    • 1970-01-01
    • 2017-07-04
    • 2018-11-30
    相关资源
    最近更新 更多