检查ContextBroker

时间:2015-06-22 08:11:33

标签: fiware fiware-orion

最近我一直致力于一个允许用户从ContextBroker,Cosmos等查询enities的应用程序。该应用程序的一个特征是初始化将由连接对象用于存储数据的实体。

创作很好,但我有一点问题。

正如Orion ContextBroker的文档中所述,当实体已经存在时,APPEND操作被解释为更新(我真的不明白为什么)。所以这是一个场景,用户有一个名为Room1的实体,传感器向他提供他的数据并存储它。有一天,他想创建一个新实体,但是出错并称之为Room1。来自Room1的所有当前数据将重置为我在我的应用程序中放置的默认值。

这是我的问题,有没有办法检查实体是否已经存在,而不是在创建之前在应用程序中进行手动查询(这需要花费更长的时间来处理)?

感谢您阅读我的问题并度过了愉快的一天。

Guillaume Jourdain。

1 个答案:

答案 0 :(得分:1)

目前(Orion 0.22.0),唯一的方法是你提到的那个:检查实体是否已经存在进行查询。

以这种方式实现更新的原因在于,对于许多用例,期望的行为恰好是对话:如果实体以前不存在,客户端不希望得到错误,并且"追加或更新"语义工作正常。不幸的是,让一个快乐的用例让另一个感到难过:(

最佳解决方案是使此行为可配置。我们现在定义了Orion实现的FIWARE NGSI API的新版本,包括用于设置行为的URL选项,例如?options=append设置"严格追加"语义(opossite to" append or update" semantics)。

编辑:Orion 0.24.0引入了APPEND_STRICT action,如果要添加的属性已经存在,则返回错误。