如何按排序列出对象的数组属性?

时间:2017-03-29 18:31:26

标签: firebase firebase-realtime-database polymer

每个用户都有一些专业人士:

users  idxxx 
           -A
           -prof: name: x
                  name: y
       idyyy
           -B
           -prof: name :y
                  name :z
                  name :x

如何按名称顺序对Prof数组列表进行排序 类似的东西:

prof list: 
x (2)               
y (2)               
z (1)

2 个答案:

答案 0 :(得分:1)

您应该对数据模型进行非规范化,即创建一个专门的额外" proflist"数据库中的节点,您将在创建新用户时增加相应专业的数量。

实际上它与您解释问题的方式相符。

更好地使用此处详述的交易https://firebase.google.com/docs/database/web/read-and-write#save_data_as_transactions

答案 1 :(得分:1)

更好的替代结构将缓解这一问题。

user_01
  -name: A
  -professors
     -YUik99j9s
         name: "prof name 0"
     -YJ89jk9sk
         name: "prof name 1"

然后在节点中读取

ref = "user_01/professors"

orderBy:("name")

请注意,教授子键(-YUik99j9s和-YJ89jk9sk)是使用push()或childByAutoId创建的,具体取决于平台。