2015-06-22 73 views
1

最近我一直在研究一个允许用户从ContextBroker,Cosmos等查询实体的应用程序。该应用程序的一个功能是初始化将由连接对象用于存储数据的实体。检查实体是否已经存在于ContextBroker中

创造工作正常,但我有一个小问题。

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

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

谢谢你阅读我的问题,祝你有美好的一天。

Guillaume Jourdain。

回答

1

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

以这种方式实现更新的原因在于,对于许多用例而言,期望的行为恰恰是oposites:如果实体先前不存在,则客户端不希望发生错误,而“append或更新“语义工作正常。不幸的是,做一个快乐的用例会让另一个用户感到难过:(

最好的解决方案是让这种行为可配置。现在我们定义一个新版本的Orion实现的FIWARE NGSI API,包括一个URL选项来设置行为,例如?options=append设置“严格追加”语义(opossite为“追加或更新”语义)

EDIT:猎户0.24.0介绍APPEND_STRICT action,它返回一个错误,如果该属性已经添加存在。

+0

感谢您的回答,我现在在创建之前进行查询以检查。我期待着下一次更新ContextBroker;)。 –

+0

Orion 0.24.0(将于2015年9月初发布)包括APPEND_STRICT。请参阅编辑答案以获取更多信息 – fgalan

相关问题