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

Fiware Scorpio按官方示例向现有实体追加新属性时遇错误求助

Fiware Scorpio: PATCH请求追加新属性报错"attribute not found in original entity"的解决办法

我之前在使用Scorpio的时候也碰到过完全一样的问题,给你梳理下背后的原因和可行的解决办法:

为什么会报错?

这个错误的核心原因是NGSI-LD规范对PATCH /entities/{entityId}/attrs端点的定义就是仅用于更新已存在的属性,而不是添加全新的属性。Scorpio严格遵循了这个规范,所以当你尝试用PATCH操作添加原本不存在的humidity属性时,就会触发这个提示。

官方文档里的"Updating an entity (appending to an entity)"章节容易造成误解——这里的"appending"其实指的是给已有属性的数组类型值追加元素(比如给已存在的connectedSensors数组加新ID),而非添加全新属性。

解决方法

有两种可行的方式来添加新属性:

方法1:改用POST请求

添加新属性的标准方式是使用POST请求调用同一个/entities/{entityId}/attrs端点,修改后的命令如下:

curl localhost:9090/ngsi-ld/v1/entities/house2%3Asmartrooms%3Aroom1/attrs -s -S -X POST -H 'Content-Type: application/json' -H 'Link: https://pastebin.com/raw/Mgxv2ykn' -d @- <<EOF 
{ 
  "humidity": { 
    "value": 34, 
    "unitCode": "PER", 
    "type": "Property", 
    "providedBy": { 
      "type": "Relationship", 
      "object": "smartbuilding:house2:sensor2222" 
    } 
  } 
} 
EOF

方法2:给PATCH请求添加options=append参数

如果你因为某些场景必须要用PATCH(比如同时更新已有属性+添加新属性),可以在请求URL后追加options=append查询参数,Scorpio会允许通过PATCH操作添加新属性:

curl localhost:9090/ngsi-ld/v1/entities/house2%3Asmartrooms%3Aroom1/attrs?options=append -s -S -X PATCH -H 'Content-Type: application/json' -H 'Link: https://pastebin.com/raw/Mgxv2ykn' -d @- <<EOF 
{ 
  "humidity": { 
    "value": 34, 
    "unitCode": "PER", 
    "type": "Property", 
    "providedBy": { 
      "type": "Relationship", 
      "object": "smartbuilding:house2:sensor2222" 
    } 
  } 
} 
EOF

验证操作是否成功

执行完请求后,可以用GET命令查询实体,确认humidity属性是否已添加:

curl localhost:9090/ngsi-ld/v1/entities/house2%3Asmartrooms%3Aroom1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 15:42:39