gpt4 book ai didi

go - Hyperledger Fabric Chaincode - 无法使用 InvokeChaincode 从另一个链代码读取数据。状态 200 但负载为空

转载 作者:IT王子 更新时间:2023-10-29 02:09:00 25 4
gpt4 key购买 nike

我正在开发一个链码,我需要从另一个链码中读取之前存储的数据。

它们在同一个 channel 上实例化,我可以单独使用它们来分别读取和写入数据。

您可以使用 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,但 Payload 为空。

你能告诉我我做错了什么吗?

最佳答案

如果 shim.success(response.Payload) 为空,则链码 B 很可能返回空负载。为了确保在返回之前尝试在链代码 A 中记录什么 response.Payload

此外,向链码 B 添加一些日志记录,这样您就可以准确地看到链码 B 应该返回给链码 A 的内容。

关于go - Hyperledger Fabric Chaincode - 无法使用 InvokeChaincode 从另一个链代码读取数据。状态 200 但负载为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52651920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com