我正在使用使用Firebase数据库的Angle 6应用程序。我想知道如何根据特定字段(仅最新字段)过滤唯一记录的文档列表。
例如,我有一组看起来像这样的邀请:
{
name: ‘Joe Shmoe’,
email: ‘jshmoe@gmail.com'
InvitedOn: ‘Sat Nov 3 2018 12:00PM’
}
每个人都可以被邀请多次,因此集合中可能包含多个对Joe Schmoe的邀请,但是对于InvitedOn属性,他们都有不同的日期/时间。
我想做的是:
我对Firebase不够熟悉,不知道该怎么做。我正在像我说的那样使用角度6,所以如果有人可以用typescript / javascript来解释如何做到这一点,或者将我定向到一个很好的网站对此进行解释,我将不胜感激。
答案 0 :(得分:0)
首先通过测试(查询)数据库的存在来防止重复。如果已经存在,请更新现有内容,而不是编写一条新记录。
与Firebase实时数据库相比,Firestore提供了更好的复合查询功能。除非您有理由不使用,否则请使用Firestore。
读取和删除(删除)彼此不同。仅仅因为您读取了最近的记录并不意味着该记录已从数据库中删除,您也必须将其删除(如果您要这样做)。
因此,答案是切换到Firestore,不要记录重复的数据,最后将时间戳记存储为Date.now()
时间戳记,以便使用简单的数字比较进行搜索。
答案 1 :(得分:0)
听起来您想显示一封电子邮件地址列表,其中包含邀请他们的最新日期。如果这是您的需要,我建议您在数据库中进行精确建模。假设使用Cloud Firestore,它看起来像:
emails_with_invites (collection)
jshmoe@gmail.com (document id)
lastInvitedOn: ‘Sat Nov 3 2018 12:00PM’
使用这样的集合,电子邮件地址将自动唯一(您的“分组依据”要求),并且您将自动获得上次邀请日期。这样做的代价是,每次发出邀请时,您都必须更新此附加收藏集。您可以在应用程序代码本身中执行此操作,也可以使用Cloud Functions。