我正在try 从FireStore获取项目数据,以下是我在firestore上的 struct :

enter image description here

这是我的代码:

FirestoreReferenceManager.rootProjects.whereField(
            FirebaseKeys.ProjectDetails.inviteData,
            arrayContains: [
                FirebaseKeys.ProjectDetails.otherUserId: userID,
                FirebaseKeys.ProjectDetails.inviteStatus: FirebaseKeys.ProjectDetails.pending
            ])

如果我在firestore上没有isInvoiceAccess个数据,那么上面的代码可以正常工作,但当我在firestore上添加该键时,上面的查询不会给我任何结果,我无法添加该键,因为它可以是truefalse.

如果我使用以下代码,那么我会得到结果:

FirestoreReferenceManager.rootProjects.whereField(
            FirebaseKeys.ProjectDetails.inviteData,
            arrayContains: [
                FirebaseKeys.ProjectDetails.otherUserId: userID,
                FirebaseKeys.ProjectDetails.inviteStatus: FirebaseKeys.ProjectDetails.pending,
                FirebaseKeys.ProjectDetails.invoiceAccess: true
            ])

因此,我希望数据来自FireStore,而不在查询中添加isInvoiceAccess.

推荐答案

arrayContains操作仅判断数组中是否存在完全匹配,而不能判断部分匹配.

用例的常见解决方法是为要查询的每个特定值/值组合添加额外的数组字段.因此,在您的情况下,添加一个字段invites_uid_and_status,每个字段仅包含这两个值,然后使用that进行此查询.

Ios相关问答推荐

Swift addtarget方法的默认参数不生效

CIKernel的Metal Shader裁剪问题

如何在HStack中将sfsymbol与Text视图对齐?

安装新版本 XCode 15.0 后无法运行应用程序 XCode

NSError 错误领域: "CBATTErrorDomain" 代码: 128 0x0000000282b111a0

如何为 XCTest、SwiftUI 预览等初始化带有 @MainActor 注释的 Swift 类

滚动 swiftUI 列表时,未调用单元格的任务修饰符.怎么修?

工具栏底部 iOS 16 - SwiftUI

Text() 正在添加额外的前导尾随填充 SwiftUI

帧过渡动画有条件地工作

如何在 SwiftUI 的列表中使用带有 swipeActions 的 NavigationLink

在向我的 struct 添加属性后获取线程 10:EXC_BAD_ACCESS (code=EXC_I386_GPFLT)

访问未定义的 stage_in 金属着色器参数

如何在 Swift 中旋转 UIButton 和 UILabel 的文本?

iOS - 确保在主线程上执行

如何缩小 UIImage 并使其同时变得清晰/锐利而不是模糊?

如何在 iOS 中判断暗模式?

如果已安装,则重定向到应用程序,否则重定向到 App Store

如何计算 Swift 数组中元素的出现次数?

如何防止 iOS 设备上的显示屏变暗和关闭?