Graphcool(GraphQL):如何对ID数组执行精确过滤?
解决精确匹配Chat用户集合的问题
你的问题出在users_every: { id_in: ["123", "234", "345"] }这个过滤条件上——它只检查聊天中的所有用户ID都存在于目标数组中,但不会限制聊天的用户数量。所以那个仅包含["123", "234"]的聊天也会被匹配到,因为这两个用户的ID确实都在你指定的三人数组里。
要实现ID数组的精确过滤,你需要同时添加两个条件:
- 限制聊天的用户数量恰好等于目标数组的长度(这里是3)
- 确保聊天中的所有用户ID都在目标数组内
下面是修正后的查询:
query { allChats(filter:{ users_count: { equals: 3 }, users_every: { id_in: ["123", "234", "345"] } }){ id users{ id } } }
逻辑说明:
users_count: { equals: 3 }会先筛选出恰好有3个用户的聊天,直接排除掉用户数量不足3的两人聊天- 再通过
users_every: { id_in: [...] }验证这3个用户的ID都属于目标数组,确保没有额外的无关用户
这样就能精准定位到包含且仅包含["123", "234", "345"]这三个用户的群聊了。
内容的提问来源于stack exchange,提问作者Vendicto
相关产品推荐
相关产品推荐

