将文档映射到具有异常的列表



我正在使用firestore将文档查询到自定义列表中。但我想指定,如果该文档中包含当前用户ID,则不应将其放在列表中。

澄清一下:这是一叠牌。每张卡都有可跳过的选项。如果用户跳过它,他们的id将被放入该卡的名为"跳过"的字段中。因此,当前用户不应该再看到那张卡,因为卡上有一个字段,上面写着他们的id跳过了它

类似于:

List<CustomCard> cards =
snapshot.documents.where(/* current ID DOESN'T exists in doc["skipped"], so adds to map*/).map((doc) => CustomCard.fromDocument(doc)).toList();

以下是我如何将用户Id添加到跳过的卡片字段:

//On skip button pressed, call:
handleSkip() {
cardRef.document(projectId).updateData({'skipped.$currentUid': true});
}

如果当前用户id跳过了堆栈上的卡,我该如何取消该卡的显示?

Cloud Firestore中没有"不等于"或"不包含"查询。两种可能的解决方案是:

  1. 隐藏用户在客户端中喜欢的卡片
  2. 列出用户不喜欢的所有卡片,然后在用户喜欢该卡片后将其删除

考虑到用例,我认为#1似乎是最可行的。

另请参阅:

  • Firestore比较运算符-包含、不包含、以开头
  • Angular Firestore |如何获取不包含的数组
  • Firestore:如何执行具有不等式/不等于的查询
  • Firestore获取值不在数组中的文档

最新更新