亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過時間戳查詢firestore中的數據

通過時間戳查詢firestore中的數據

瀟瀟雨雨 2021-10-29 13:58:36
我正在按時間戳查詢文檔,它返回一個空數組。但是,當我使用"=="時它有效,例如:.where('date', '==',timestamp),并在我使用'>='或'<='時返回空數組。我也嘗試將時間戳轉換為日期對象和字符串,但沒有成功。注意:firestore 中的日期字段是Timestamp類型。我正在查詢集合中日期大于“2018-08-03”的文檔。下面是交易集合(左)和文檔(右)的圖片,它們應該是返回的文檔數組的一部分,因為日期大于“2018-08-03”下面是我的代碼。  const firstDay = new Date('2018-08-03');  const timestamp1 = admin.firestore.Timestamp.fromDate(firstDay);  const trans = [];  const docRef = db.collection('Users').doc(uid).collection('transactions').where('item_id', '==', item_id)    .where('date', '>=', timestamp1);  await docRef.get()    .then((snapshot) => {      snapshot.forEach((doc) => {        trans.push({ transaction_id: doc.id, transaction: doc.data() });      });    })    .catch(err => new Error('cannot get the documents', err));預期結果:應該是一個交易日期大于上面指定的數組。實際結果:空數組。由于它為相等==工作,我認為>=和<=會工作。我在這里缺少什么嗎?
查看完整描述

3 回答

?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

所以我正在測試它,我認為這是一個與你所展示的非常相似的設置,我實際上能夠重現相同的行為。

在測試了不同的可能性后,我發現我的問題與字段的數據類型無關,而是與復合索引配置有關。

使此查詢工作所需的復合索引配置如下:

http://img1.sycdn.imooc.com//617b8db50001612206020158.jpg

根據文檔的復合索引支持查詢部分,這些類型的復合查詢的索引應該首先具有相等過濾字段,這沒有明確說明,但文檔中的示例是這樣呈現的。

讓我知道這是否為您解決了問題。


查看完整回答
反對 回復 2021-10-29
?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

獲取您的日期并轉換為 javascript 日期對象。然后在轉換后的日期對象上執行 getTime() 它將返回一個數字。然后獲取 firestore 時間戳并執行 getSeconds()。將 firestore 時間戳的秒值與 getTime() 的變量存儲輸出進行比較。


查看完整回答
反對 回復 2021-10-29
?
拉莫斯之舞

TA貢獻1820條經驗 獲得超10個贊

該查詢需要一個 COLLECTION_ASC 索引來收集交易和字段日期。那個索引還沒有準備好。

為什么不按照錯誤提示創建索引?這可能會從根本上解決您的問題。


查看完整回答
反對 回復 2021-10-29
  • 3 回答
  • 0 關注
  • 201 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號