You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用KafkaMagic筛选非空属性Kafka消息时JS查询报错求助

KafkaMagic筛选Kafka消息时JavaScript查询报错解决

问题场景

使用KafkaMagic工具筛选Kafka Topic中存在指定非空属性的消息时,执行JavaScript查询触发如下报错:

TypeError: Cannot read properties of undefined (reading 'rpo_info') at (Script:3:57)

使用的过滤语句为:

return (Context.Message.content.operation_info.rpo_info.rpo_info.source_bar_code != null);

报错原因

报错提示无法读取undefined的rpo_info属性,说明链式访问的属性层级中,Context.Message.content.operation_info 或 operation_info.rpo_info 可能不存在(值为undefined),直接链式访问会触发类型错误,并非仅因source_bar_code不存在导致。

解决方法

方法1:使用可选链操作符(推荐)

通过?.操作符自动处理中间层级不存在的情况,避免报错:

return (Context.Message.content?.operation_info?.rpo_info?.rpo_info?.source_bar_code != null);

如果中间任意层级不存在,表达式会直接返回undefined,最终判断结果为false,过滤掉属性不完整的消息。

方法2:逐层做存在性检查(兼容旧环境)

如果环境不支持可选链,可手动逐层判断每个层级是否存在:

const content = Context.Message.content;
// 逐层检查属性层级是否存在
if (!content || !content.operation_info || !content.operation_info.rpo_info || !content.operation_info.rpo_info.rpo_info) {
    return false;
}
// 最后判断目标属性是否非空
return content.operation_info.rpo_info.rpo_info.source_bar_code != null;

效果说明

两种方法都会跳过属性层级不完整的消息,仅保留拥有完整content -> operation_info -> rpo_info -> rpo_info层级且source_bar_code非空的消息,同时避免触发类型错误。

内容的提问来源于stack exchange,提问作者Ilya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 15:35:20