You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hyperledger Composer更新参与者模型字段时如何保留原有数据?

如何在Hyperledger Composer更新模型时保留原有数据

这个问题我在Hyperledger Composer开发过程中踩过坑,其实核心原因是直接修改模型后重新部署会触发数据结构重置——因为旧数据的结构和新模型不匹配,系统会默认清空原有数据。要保留数据,必须走模型升级+兼容迁移的流程,具体操作步骤如下:

1. 给新增字段设置默认值(可选但强烈推荐)

在修改CTO模型文件时,给新增的参与者字段加上默认值,这样原有数据在升级后,新增字段会自动填充默认值,避免空值引发的业务逻辑问题。示例:

participant Customer identified by customerId {
  o String customerId
  o String fullName
  o String email  // 原有字段
  o Integer memberLevel default=1  // 新增字段,设置默认值为1
}

2. 重新打包业务网络档案(BNA)

修改完模型后,先更新package.json里的版本号(比如从1.0.0改成1.0.1),再重新生成包含新模型的BNA文件:

composer archive create -t dir -n .

执行后会在当前目录生成一个带新版本号的.bna文件。

3. 升级业务网络(而非重新部署)

这是保留数据的关键!不要删除旧的业务网络实例,而是用upgrade命令完成版本迭代:

composer network upgrade -c admin@your-network-name -a your-new-network.bna

这个命令会在不破坏原有数据的前提下,将业务网络的模型和逻辑更新到新版本。

4. 验证数据完整性

升级完成后,用命令或REST API查询参与者数据,确认原有数据和新增字段都正常:

composer participant list -c admin@your-network-name

如果看到原有参与者的信息完整保留,且新增字段按默认值填充,就说明操作成功了。

额外注意事项

  • 不要修改已有字段的类型或删除已有字段,这会导致数据结构不兼容,升级时依然会丢失数据。如果必须做这类修改,需要编写自定义的数据迁移脚本处理旧数据。
  • 升级前最好备份数据,用export命令导出当前业务网络的完整数据:
composer network export -c admin@your-network-name -f backup-network.bna

万一升级出问题,可以用这个备份文件恢复数据。

内容的提问来源于stack exchange,提问作者user9040429

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:05:12