Firebase Firestore中软删除的建模数据

Firebase Firestore中软删除的建模数据,firebase,nosql,google-cloud-firestore,Firebase,Nosql,Google Cloud Firestore,我试图通过在每个文档deletedOn上都有一个时间戳或空的字段来实现软删除。但到目前为止,它使我的查询变得复杂,这给我带来了一些麻烦,因为我需要在每个查询中过滤掉这些文档。deletedOn在UI中公开以永久删除,但是如果客户寻求支持,我们可以通过将deletedOn字段设置回null来恢复删除的数据。有没有更好的方法在NoSQL数据库中对此进行建模?我更倾向于单独收藏?e、 g.联系人已删除,删除联系人时,将其移动到其他相应的集合。但是我还是NoSQL新手,所以我不知道这是否会更好我最终为未

我试图通过在每个文档deletedOn上都有一个时间戳或空的字段来实现软删除。但到目前为止,它使我的查询变得复杂,这给我带来了一些麻烦,因为我需要在每个查询中过滤掉这些文档。deletedOn在UI中公开以永久删除,但是如果客户寻求支持,我们可以通过将deletedOn字段设置回null来恢复删除的数据。有没有更好的方法在NoSQL数据库中对此进行建模?我更倾向于单独收藏?e、 g.联系人已删除,删除联系人时,将其移动到其他相应的集合。但是我还是NoSQL新手,所以我不知道这是否会更好

我最终为未删除和已删除的文档创建了两个不同的集合,例如contacts和contacts_deleted,然后创建了firebase函数,用于监视contacts集合中的删除并将文档复制到已删除收藏的联系人。这样,移动已删除文档的责任就不会由客户端承担。

另一个选项是为每个文档存储一个状态字段。然后,您可以在您的中要求此状态:

只有在以后要删除它们时,创建和修改才是重要的,这是使用firebase.database.ServerValue.TIMESTAMP设置的

例如,您可以将每个文档设置为“已发布”状态,然后当您将其丢弃时,将其更改为“垃圾”。然后,您可以通过以下方式查询并仅获取已发布的帖子:

db.collection('posts').where('status', '==', 'published');
可选择的 然后,如果您想写一篇文章,您可以选择永久删除所有超过特定时间戳的垃圾文章(如果它们超过30天)

var now=Date.now; var截止=现在-30*24*60*60*1000;//30天
db.collection'posts'。其中'status','=','trashed'。其中'modified','您尝试过实现它吗?你的想法怎么了?你做得很好,Kdawgwilk。
db.collection('posts').where('status', '==', 'published');