![](/img/trans.png)
[英]How to get data from Firebase Realtime Database into list in Flutter?
[英]How to query firebase realtime database to get last month data
如何根據快照中的時間戳查詢上個月或過去 2 個月的數據這是問題,知道我已經能夠像這樣在 Firestore 中做到這一點
useEffect(() =>{
const fetchData = async () => {
const today = new Date()
const lastMonth = new Date(new Date().setMonth(today.getMonth() - 1))
const prevMonth = new Date(new Date().setMonth(today.getMonth() - 2))
const lastMonthQuery = query(collection(db,'users'), where('since', '<=', today), where('since', '>', lastMonth))
const lastMonthData = await getDocs(lastMonthQuery)
}
fetchData()
},[])
我如何在實時數據庫中編寫這樣的查詢? 我已經嘗試過這段代碼,這就是我的數據庫的樣子
useEffect(()=>{
const fetchData = async () =>{
const today = new Date()
const lastMonth = new Date(new Date().setMonth(today.getMonth() - 1))
const prevMonth = new Date(new Date().setMonth(today.getMonth() - 2))
try{
const dbRef = query(ref(database, 'users/since'), startAt(lastMonth), endAt(today));
const last = await get(dbRef)
console.log(last)
}catch(err){
console.log(err)
}
}
fetchData()
},[])
在控制台中我得到了這個
錯誤:查詢:按優先級排序時,傳遞給 startAt()、startAfter()、endAt()、endBefore() 或 equalTo() 的第一個參數必須是有效的優先級值(null、數字或字符串)。
此代碼不起作用:
query(ref(database, 'users/since'), startAt(lastMonth), endAt(today));
這會創建對/users/since
的引用(在您的屏幕截圖中不存在),然后根據稱為優先級的隱式值過濾它們。
您想要做的是在/users
上運行查詢並過濾since
上的數據,您可以通過將orderByChild
傳遞給查詢來完成:
query(ref(database, 'users'), orderByChild('since'), startAt(lastMonth), endAt(today));
另請參閱有關訂購數據的 Firebase 文檔,在過濾之前您應該始終這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.