按时 间戳查询firestore中的数据

问题描述 投票:0回答:1

我正在按时间戳查询文档,并且它返回一个空数组。但是,当我使用“ ==” ex:。where('date','==',timestamp)时有效,并且当我使用'> ='时返回空数组或'<='

我也尝试将时间戳转换为日期对象和字符串,但没有成功。

Note:firestore中的date字段的类型为Timestamp

我正在查询集合中日期大于'2018-08-03'的文档。

下面是交易集合(左)和文档(右)的图片,它们应该是返回的文档数组的一部分,因为日期大于'2018-08-03'] >>

enter image description here

下面是我的代码。

  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));

预期结果

:应该是日期大于上面指定的事务的数组。实际结果:空数组。

因为它为平等而工作==

,所以我认为> =<=可以工作。我在这里缺少什么?

我正在按时间戳查询文档,并且它返回一个空数组。但是,当我使用“ ==” ex:.where('date','==',timestamp)并在我使用'> ='或'<='时返回空数组时,它可以工作。我有...

javascript firebase google-cloud-firestore firebase-admin
1个回答
0
投票

带上您的日期并转换为javascript日期对象。然后对转换后的日期对象执行getTime(),它将返回一个数字。然后获取Firestore时间戳并执行getSeconds()。将Firestore时间戳的秒数与存储getTime()输出的变量进行比较。

© www.soinside.com 2019 - 2024. All rights reserved.