在composer rest服务器中,PUT请求引发无法在多用户模式下读取未定义的属性'productId'

时间:2018-08-28 12:49:36

标签: hyperledger-composer

我正在使用Composer版本0.19.12和结构1.1

在多用户模式下未传递id(唯一键)数据字段且数据得到更新时,Composer Rest服务器抛出Cannot read property 'productId' of undefined。但是当以单用户模式运行时,它运行良好。

这是我的模型文件。

 asset Product identified by productId{
     o String productId
     o String productTitle
     --> SubSupplier subSupplier optional
     --> Supplier supplier optional
}

传递的参数: enter image description here

结果: enter image description here

docker ps: enter image description here

1 个答案:

答案 0 :(得分:1)

我刚刚测试了模型的简单版本(没有关系字段),并且在REST服务器上使用单用户和多用户时,我得到相同的行为。

asset P2 identified by productId {
  o String productId
  o String productTitle
}

我正在使用最新的Composer v0.20.0和Fabric 1.2

如果我在JSON中包含productId:

{
  "$class": "org.fabric.vendor.P2",
  "productId": "11",
  "productTitle": "thirteen"
}

单用户和多用户模式下均失败,并出现以下错误:Unhandled error for request PUT /api/P2/11: Error: id property (productId) cannot be updated from 11 to 11

当我删除产品ID时:

{
  "$class": "org.fabric.vendor.P2",
  "productTitle": "thirteen"
}

它对于 单用户和多用户均适用。

我认为您看到的错误很可能是由于更改模型之前Fabric上的一些旧数据所致。您可以尝试使用完全不同的productId和值创建一些新的测试数据,并且可能会起作用,但是我建议您从一个干净的Fabric和一个具有更简单模型的新业务网络开始,然后进行重新测试。