假设我有一个业务网络v1.0.0,其中有一个具有以下模型的参与者:
participant Member identified by memberId {
o String memberId
o String firstName
}
部署网络后,我创建了一个成员。
稍后我想向成员模型添加一个字段。 例如
participant Member identified by memberId {
o String memberId
o String firstName
o String lastName
}
所以我创建新网络并升级前一个网络:
composer network upgrade -c peeradmin@hlfv1 -n example-netowrk -V 2.0.0
我之前创建的成员会怎样?是否已删除?我怎样才能将其保留在系统中并继续使用它并通过仅添加姓氏来更新其信息?
此处的文档描述了模型定义的演变 https://hyperledger.github.io/composer/latest/reference/model-compatibility,应该回答你的问题。
当您更改模型时,您的 API 也会更改以反映更改。您的数据不会消失,也不会像在账本上那样消失,但它不会包含您添加的新字段。
部署新模型后,您可以向该资产发出 GET 请求,这将为您提供所有现有数据,您可以使用所需的任何内容填充新字段并对该资产发出 PUT 请求。现在,这将为您提供包含新数据的旧资产。
当然,我建议您仔细考虑如何更改现有资产。我在这里想到了一个政策,它说你不应该重命名任何东西,你不应该删除任何东西。您要做的就是添加新属性。如果您开始搞乱重命名和删除,这势必会导致问题,尤其是在生产环境中。