在Firebase中,startAt()
和 endAt()
方法用于对查询结果进行范围过滤
首先,确保你的 Firebase 项目已经启用了 Realtime Database 或 Cloud Firestore,并且你已经设置了正确的规则以允许读取数据。
假设你有一个名为 events
的节点,其中包含按日期存储的事件数据,如下所示:
{
"events": {
"-MkYg...": {
"name": "Event 1",
"date": "2022-01-01"
},
"-MkJH...": {
"name": "Event 2",
"date": "2022-01-02"
},
...
}
}
你可以使用以下查询来获取指定日期范围内的事件:
const firebase = require('firebase/app');
require('firebase/database');
const firebaseConfig = {
// Your Firebase config here
};
firebase.initializeApp(firebaseConfig);
const database = firebase.database();
const startDate = '2022-01-01';
const endDate = '2022-01-31';
database.ref('events')
.orderByChild('date')
.startAt(startDate)
.endAt(endDate)
.once('value', (snapshot) => {
const events = snapshot.val();
console.log(events);
});
假设你有一个名为 events
的集合,其中包含按日期存储的事件数据,如下所示:
{
"events": [
{
"name": "Event 1",
"date": "2022-01-01"
},
{
"name": "Event 2",
"date": "2022-01-02"
},
...
]
}
你可以使用以下查询来获取指定日期范围内的事件:
const firebase = require('firebase/app');
require('firebase/firestore');
const firebaseConfig = {
// Your Firebase config here
};
firebase.initializeApp(firebaseConfig);
const firestore = firebase.firestore();
const startDate = '2022-01-01';
const endDate = '2022-01-31';
firestore.collection('events')
.orderBy('date')
.startAt(startDate)
.endAt(endDate)
.get()
.then((snapshot) => {
const events = snapshot.docs.map(doc => doc.data());
console.log(events);
});
请注意,startAt()
和 endAt()
方法默认情况下会包含边界值。如果你想要排除边界值,可以使用 startAfter()
和 endBefore()
方法。
另外,为了提高查询性能,建议在 date
字段上创建索引。在 Realtime Database 中,这通常是自动完成的。在 Cloud Firestore 中,你需要在 Firebase 控制台中手动创建索引。
领取专属 10元无门槛券
手把手带您无忧上云