我正在按时间戳查询文档,并且它返回一个空数组。但是,当我使用“ ==” ex:。where('date','==',timestamp)时有效,并且当我使用'> ='时返回空数组或'<='。
我也尝试将时间戳转换为日期对象和字符串,但没有成功。
Note:firestore中的date字段的类型为Timestamp。
我正在查询集合中日期大于'2018-08-03'的文档。
下面是交易集合(左)和文档(右)的图片,它们应该是返回的文档数组的一部分,因为日期大于'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));
预期结果
因为它为平等而工作==
,所以我认为> =和<=可以工作。我在这里缺少什么?我正在按时间戳查询文档,并且它返回一个空数组。但是,当我使用“ ==” ex:.where('date','==',timestamp)并在我使用'> ='或'<='时返回空数组时,它可以工作。我有...
带上您的日期并转换为javascript日期对象。然后对转换后的日期对象执行getTime(),它将返回一个数字。然后获取Firestore时间戳并执行getSeconds()。将Firestore时间戳的秒数与存储getTime()输出的变量进行比较。