以下是我的代码的一部分
db.collection("Activities").whereField("read", notIn: [Auth.auth().currentUser!.uid]).limit(to: 10).getDocuments{ (querySnapshot, error)我可以看到我的uid是"Y31FESSEmZgb6F9mPQoQLrgymnQ2“。
这是我的数据库图片

但是,查询结果将包含具有此uid的数据。查询whereField复合似乎不起作用。如何修复它?
发布于 2020-10-21 17:11:12
调用whereField(_:notIn:)时,将read数组与作为notIn参数传入的数组中的每个元素进行比较。notIn数组中唯一的元素是uid字符串。由于您正在将数组(read)与字符串(uid)进行比较,因此会得到意外的结果。
如果我是您,我会尝试使用filter(using:)方法,看看这是否能满足您的需求。这可能是您需要的:
let predicate = NSPredicate(format: "NOT (ANY read == %@)", Auth.auth().currentUser!.uid)
db.collection("Activities").filter(using: predicate)发布于 2020-10-22 10:16:52
似乎"notIn“是firebase的一个新命令,并没有明确的例子来说明我想要什么。因此,我使用了一种笨拙的方法,即手动设置限制,然后达到限制将中断循环。使用if array.contains来确定它是否存在于数组中。
https://stackoverflow.com/questions/64458481
复制相似问题