将文档映射到列表,但有例外

时间:2019-10-24 01:43:38

标签: firebase flutter dart google-cloud-firestore

我正在使用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跳过了堆叠中的卡,该如何显示呢?

1 个答案:

答案 0 :(得分:0)

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

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

鉴于用例,我认为#1似乎最可行。

另请参阅: