【发布时间】:2019-05-18 20:16:35
【问题描述】:
在 Orion 中,是否可以更改实体的类型? 相关问题,可以改变属性的类型吗?
编辑:更改实体的类型似乎是不可能的。所以创建一个新实体似乎是一个解决方案。但是如何保存 dateCreated 和 dateModified 呢?
【问题讨论】:
标签: fiware-orion
在 Orion 中,是否可以更改实体的类型? 相关问题,可以改变属性的类型吗?
编辑:更改实体的类型似乎是不可能的。所以创建一个新实体似乎是一个解决方案。但是如何保存 dateCreated 和 dateModified 呢?
【问题讨论】:
标签: fiware-orion
在 Orion 中,是否可以更改实体的类型
不直接。实体 id 和实体类型是不可变的。但是,您可以使用新类型创建实体的副本,然后删除旧实体。这将产生同样的效果。
相关问题,可以改变属性的类型吗?
是的,是的。更新属性时,不仅可以更改值,还可以更改类型(和元数据)。
编辑:dateModified 和dateCreation 属性和元数据设计为由 Context Broker 自动管理。客户端不能修改它们,它们是“只读的”。这个想法是给定的上下文消费者客户端(原则上,它独立于创建/更新实体的上下文生产者客户端)具有任何人都无法更改的可信时间戳。
所以,你基本上有两种选择:
使用您的自定义时间戳属性和元数据。当您创建新实体时,它们可以“移动”到新实体。但是,CB 不会自动维护它们,因此您的应用程序必须这样做。
使用 API 外进程,在 DB 级别移动实体。但是,这可能很复杂,因为您需要直接访问 DB。
EDIT2:对于第二种情况(基于数据库的进程),请考虑Orion DB model。特别是:
_id.type 用于实体类型creDate 代表实体创建日期modDate是实体修改日期attrs.A.creDate 用于属性 A 创建日期attrs.A.modDate为属性A修改日期【讨论】: