如何在Channel中查询自定义对象?排查invalid field operation报错
问题解决:Stream Chat queryChannels 嵌套字段过滤报错
直接嵌套对象的过滤写法不符合Stream Chat的查询规则,导致出现invalid field operation错误。解决方法是用点标记法指定嵌套字段的路径,或者结合操作符明确匹配条件。
正确的过滤写法
方法一:点标记法直接匹配
const filter = { type: 'messaging', 'data.custom.name': 'testing' };
方法二:使用$eq操作符明确匹配(适用于复杂条件场景)
const filter = { type: 'messaging', 'data.custom.name': { $eq: 'testing' } };
修改后的完整查询代码
const filter = { type: 'messaging', 'data.custom.name': 'testing' }; const sort = [{ last_message_at: -1 }]; const channels = await chatClient.queryChannels(filter, sort, { watch: true, // 默认开启 state: true, });
原因说明
Stream Chat的查询API不支持直接通过嵌套对象(如data: { custom: { name: 'testing' } })来指定过滤条件,必须通过点路径(data.custom.name)明确指向深层嵌套的字段,这样服务端才能正确解析要匹配的目标字段。
内容的提问来源于stack exchange,提问作者luis
相关产品推荐
相关产品推荐

