我正在使用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似乎是最可行的。
另请参阅:
- Firestore比较运算符-包含、不包含、以开头
- Angular Firestore |如何获取不包含的数组
- Firestore:如何执行具有不等式/不等于的查询
- Firestore获取值不在数组中的文档