我们如何使用 Angular 按 TimeStamp 数据类型对 Firebase Firestore 数据进行排序?
Posted
技术标签:
【中文标题】我们如何使用 Angular 按 TimeStamp 数据类型对 Firebase Firestore 数据进行排序?【英文标题】:How can we sort Firebase Firestore data by TimeStamp dataType using Angular? 【发布时间】:2019-06-01 08:05:44 【问题描述】:我正在使用 Ticket Posting Web 应用程序,我将只显示那些有效且在 24 小时内记录(从现在开始)内的票。
我正在使用 Firebase Cloud Firestore 和 Angular 7。
getTicketList()
this.ticketData =
this.fireStore.collection('ticket').doc("paid").collection("ticket-list",
ref =>
ref.where('status', '==',
"active").where("paid","==","false").orderBy("myTimeStamp");
return this.ticketData.snapshotChanges() ;
我们有一个键“myTimestamp”,它是 Firestore Timestamp 类型。
只想显示那些有效且当前还有时间预订的记录。
下面我提到了我用来从 Firebase 服务获取的代码。
this.firestore.getTicketList().subscribe(list =>
this.ticketList = list.map(item =>
return id:item.payload.doc.id,
...item.payload.doc.data()
)
console.log(this.ticketList);
);
谢谢
编辑
【问题讨论】:
【参考方案1】:您可以通过传递Date
对象来查询数据/时间戳字段。因此,例如现在获取之前的所有项目:
ref
.where('status', '==', "active")
.where("paid","==","false")
.where("myTimeStamp","<", new Date())
.orderBy("myTimeStamp")
【讨论】:
你好弗兰克,请看一下我添加到我的问题中的图片。我们进行了这些更改,但仍然没有结果并收到错误消息。 查询确实需要索引。如果您单击该错误中的链接,它将带您直接进入控制台页面以创建必要的索引。 转到断开的链接.....firebase 控制台...我的数据库中没有任何索引。 您需要在status
、paid
和myTimeStamp
上添加索引。如果链接损坏,您可能需要file a bug report。
@FrankvanPuffelen 您如何将 JS Date() 格式与 Firestore 时间戳进行比较?此外,Firestore 时间戳不使用任何时区!以上是关于我们如何使用 Angular 按 TimeStamp 数据类型对 Firebase Firestore 数据进行排序?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用innerHTML在angular 2中附加HTML内容