首页 > 解决方案 > 在 firebase 中查询 startAt 和 endAt 的日期

问题描述

我有以下数据结构:

attendance
--- 2020-02-09-PM
--- 2020-02-11-PM
--- 2020-02-16-AM
--- 2020-02-16-PM
--- 2020-02-18-PM

例如,我想获得 2020-02-16 的日期,我需要 PM 和 AM。所以我想查询我的数据库以仅获取该数据。

这是我的尝试:

function getAttendanceCount(orgUid, dates) {
   orgUid.forEach(uid => {
     dates.forEach(date => {
       const getAttendCount = fDB.ref(`organization/${uid}/attendance`)
      .orderByChild('attendance')
      .startAt(date+'-AM')
      .endAt(date+'-PM')
      .once('value')
      .then(c => console.log(c.val()));
   });
 })
}

我的 console.log 为空。知道我怎么能做到这一点吗?

标签: javascriptfirebasefirebase-realtime-database

解决方案


改变这个:

const getAttendCount = fDB.ref(`organization/${uid}/attendance`)
      .orderByChild('attendance')

进入这个:

const getAttendCount = fDB.ref(`organization/${uid}/attendance`)
      .orderByKey()

您需要使用的原因orderByKey()是因为日期作为键而不是作为child具有值的示例:

"name" : "peter"

推荐阅读