检查 Entity 是否已经存在于 ContextBroker 中
Check if Entity already exists in a ContextBroker
最近我一直在开发一个允许用户从 ContextBroker、Cosmos 等查询实体的应用程序。该应用程序的一个功能是初始化一个实体,连接的对象将使用该实体来存储数据。
创建工作正常,但我有一个小问题。
如 Orion ContextBroker 的文档中所述,当实体已存在时,APPEND 操作将被解释为 UPDATE(我真的不明白为什么)。所以这是一个场景,用户有一个名为 Room1 的实体,传感器将他的数据提供给他并存储它。有一天,他想创建一个新实体,但出错了,将其命名为 Room1。 Room1 的所有当前数据都将重置为我在应用程序中输入的默认值。
这是我的问题,除了在创建之前在应用程序中进行手动查询(这将花费更长的时间来处理)之外,是否有其他方法可以检查实体是否已经存在?
感谢您阅读我的问题,祝您有愉快的一天。
纪尧姆茹尔丹。
目前(Orion 0.22.0),唯一的方法是您提到的方法:检查实体是否已经存在进行查询。
以这种方式实现更新的原因是,对于许多用例,所需的行为恰恰是相反的:如果实体以前不存在并且 "append or update" 语义工作正常。不幸的是,让一个用例开心会让另一个用例难过:(
最好的解决方案是使此行为可配置。我们现在正在定义 Orion 实现的新版本的 FIWARE NGSI API,包括一个 URL 选项来设置行为,例如?options=append
设置 "strict append" 语义(与 "append or update" 语义相反)。
编辑:Orion 0.24.0 引入了 APPEND_STRICT action,如果要添加的属性已经存在,returns 会出错。
最近我一直在开发一个允许用户从 ContextBroker、Cosmos 等查询实体的应用程序。该应用程序的一个功能是初始化一个实体,连接的对象将使用该实体来存储数据。
创建工作正常,但我有一个小问题。
如 Orion ContextBroker 的文档中所述,当实体已存在时,APPEND 操作将被解释为 UPDATE(我真的不明白为什么)。所以这是一个场景,用户有一个名为 Room1 的实体,传感器将他的数据提供给他并存储它。有一天,他想创建一个新实体,但出错了,将其命名为 Room1。 Room1 的所有当前数据都将重置为我在应用程序中输入的默认值。
这是我的问题,除了在创建之前在应用程序中进行手动查询(这将花费更长的时间来处理)之外,是否有其他方法可以检查实体是否已经存在?
感谢您阅读我的问题,祝您有愉快的一天。
纪尧姆茹尔丹。
目前(Orion 0.22.0),唯一的方法是您提到的方法:检查实体是否已经存在进行查询。
以这种方式实现更新的原因是,对于许多用例,所需的行为恰恰是相反的:如果实体以前不存在并且 "append or update" 语义工作正常。不幸的是,让一个用例开心会让另一个用例难过:(
最好的解决方案是使此行为可配置。我们现在正在定义 Orion 实现的新版本的 FIWARE NGSI API,包括一个 URL 选项来设置行为,例如?options=append
设置 "strict append" 语义(与 "append or update" 语义相反)。
编辑:Orion 0.24.0 引入了 APPEND_STRICT action,如果要添加的属性已经存在,returns 会出错。