Chaincode中的属性返回空白值

时间:2018-07-09 15:30:02

标签: hyperledger-fabric hyperledger-fabric-ca

我正在尝试使用cid库(https://github.com/hyperledger/fabric/tree/release-1.1/core/chaincode/lib/cid)来检索链码中的属性值,但是它返回空值。

我修改了fabcar示例,以使用fabcar链码中的属性值进行实验。我的处理方法如下

  1. cid库在cli容器中不可用,因此我通过docker compose文件将整个结构代码库从主机映射到Docker容器。
    valumes: /home/asad/projects_fabric_1.2/src/github.com/hyperledger/fabric:/opt/gopath/src/github.com/hyperledger/fabric

现在我可以从cid库访问API。

2-我用myuser(在fabcar示例中为CA)注册了另一个用户(ca.example.com),其属性在我的配置文件中如下所示:

id:
  name: myuser
  type: user
  affiliation: org1.department1
  maxenrollments: 0
  attributes:
   - name: hf.IntermediateCA
     value: false
   - name: hf.Registrar.Roles
     value: "peer,orderer,client,user"
   - name: hf.Registrar.DelegateRoles
     value: "peer,orderer,client,user"
   - name: hf.Registrar.Attributes
     value: "*"
   - name: hf.GenCRL
     value: false
   - name: hf.Revoker
     value: false
   - name: hf.AffiliationMgr
     value: false
   - name: 'full_name'
     value: "Jhon Doe"
   - name: 'department'
     value: "Computer Engineering"

我通过myuser注册并注册了fabric-ca-client,并使用myuser修改了registerUser.js和invoke.js javascript文件。

现在,我修改fabcar链码以检索和记录这些属性值。

mspid, err := cid.GetMSPID(APIstub)

fmt.Printf("\nMSPID:\n %s \n\n", mspid)
fmt.Printf("\n\n\n")
if err != nil {
    fmt.Printf("\n%e\n\n", err)
}

attr1, ok, err := cid.GetAttributeValue(APIstub, "full_name")

if !ok {
    fmt.Printf("\nFull_Name not OK.\n")
}
fmt.Printf("\nfull_name:\n %s \n\n", attr1)
fmt.Printf("\n\n\n")
if err != nil {
    fmt.Printf("\n%e\n\n", err)
}

attr2, ok, err := cid.GetAttributeValue(APIstub, "department")

if !ok {
    fmt.Printf("\nDepartment not OK.\n")
}

fmt.Printf("\ndepartment:\n %s \n\n", attr2)
fmt.Printf("\n\n\n")
if err != nil {
    fmt.Printf("\n%e\n\n", err)
}

现在,当我运行通过node invoke.js调用链代码并检查链代码容器的日志时,我得到以下输出。

MSPID:
 Org1MSP 





Full_Name not OK.

full_name:






Department not OK.

department:

有人知道为什么我没有得到我的属性值吗??

0 个答案:

没有答案