Hyperledger Fabric Chaincode - 无法使用 InvokeChaincode 从另一个链代码读取数据。状态 200 但负载为空
Hyperledger Fabric Chaincode - Failed to read data from another chaincode using InvokeChaincode. Status 200 but Payload is Empty
我正在开发一个链码,我需要从另一个链码中读取之前存储的数据。
它们在同一个通道上实例化,我可以单独使用它们来分别读写数据。
您可以使用 marble
链码复制它,在同一个节点上以不同的名称安装它。
在其中一个(A)中,我实现了invokeChaincode(B),以这种方式读取B存储的数据:
func (chaincode *SimpleChaincode) queryMarblesFromAnotherChaincode(stub shim.ChaincodeStubInterface, args []string) peer.Response {
queryMarble := "queryMarble"
if len(args) != 3 {
return shim.Error("Incorrect number of arguments. Expecting 3")
}
chaincodeName := args[0]
chaincodeArgs := toChaincodeArgs(queryMarble, args[1])
chaincodeChannel := args[2]
response := stub.InvokeChaincode(chaincodeName, chaincodeArgs, chaincodeChannel)
if response.Status != shim.OK {
return shim.Error(fmt.Sprintf("Failed to query chaincode: %s", response.Payload))
}
return shim.Success(response.Payload)
}
运行 该方法使用 peer chaincode invoke ..
,
我收到 status: 200
,但有效负载为空。
你能告诉我做错了什么吗?
如果 shim.success(response.Payload)
为空,则链码 B 很可能返回空负载。为了确保在返回之前尝试在链码 A 中记录 response.Payload
的内容。
此外,向链代码 B 添加一些日志记录,这样您就可以准确地看到什么链代码 B 应该返回给链代码 A。
我正在开发一个链码,我需要从另一个链码中读取之前存储的数据。
它们在同一个通道上实例化,我可以单独使用它们来分别读写数据。
您可以使用 marble
链码复制它,在同一个节点上以不同的名称安装它。
在其中一个(A)中,我实现了invokeChaincode(B),以这种方式读取B存储的数据:
func (chaincode *SimpleChaincode) queryMarblesFromAnotherChaincode(stub shim.ChaincodeStubInterface, args []string) peer.Response {
queryMarble := "queryMarble"
if len(args) != 3 {
return shim.Error("Incorrect number of arguments. Expecting 3")
}
chaincodeName := args[0]
chaincodeArgs := toChaincodeArgs(queryMarble, args[1])
chaincodeChannel := args[2]
response := stub.InvokeChaincode(chaincodeName, chaincodeArgs, chaincodeChannel)
if response.Status != shim.OK {
return shim.Error(fmt.Sprintf("Failed to query chaincode: %s", response.Payload))
}
return shim.Success(response.Payload)
}
运行 该方法使用 peer chaincode invoke ..
,
我收到 status: 200
,但有效负载为空。
你能告诉我做错了什么吗?
如果 shim.success(response.Payload)
为空,则链码 B 很可能返回空负载。为了确保在返回之前尝试在链码 A 中记录 response.Payload
的内容。
此外,向链代码 B 添加一些日志记录,这样您就可以准确地看到什么链代码 B 应该返回给链代码 A。