Firebase检索chid数据

时间:2016-10-13 09:58:24

标签: javascript firebase firebase-realtime-database

我的对象如下

  • -Notifications
    • 用户id
      • KEY1
        • datakey1
          • 日期:10-10-2016
          • 时间:下午3:20
          • 状态:打开
      • KEY2
        • datakey2
          • 日期:2016年10月11日
          • 时间:下午5:00
          • 状态:关闭

我有通知,直到通知/ userId

如何检索status ='open'

的数据

评论代码:

ref.orderByChild("status")
   .equalTo('open')
   .on("value", function(snapshot) { console.log(snapshot.key); }); 

1 个答案:

答案 0 :(得分:0)

Firebase查询只能包含一个动态密钥。

在您的情况下,key1 / key2datakey1 / datakey2下有两个动态键。您必须将其中一个放在固定位置(例如key1/my/statuskey2/my/status),否则您必须以不同方式构建数据。

notificationsStatusPerUser
    userId: {
      key1_datakey1: {
        status: "open",
        path: "key1/datakey1"
      }
      key2_datakey2: {
        status: "close",
        path: "key2/datakey2"
      }
    }
}

现在,您可以找到特定用户的所有未清项目:

var query = ref.child('notificationsStatusPerUser')
               .child(uid)
               .orderByChild(status)
               .equalTo('open');
query.on('child_added', function(snapshot) {
    ref.child('notifications')
       .child(uid)
       .child(snapshot.val().path)
       .once('value', function(linkedSnapshot) {
           console.log(linkedSnapshot.val());
       });
};