登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-04-15 09:09:33 401浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《Hyperledger Fabric Chaincode - 无法使用 InvokeChaincode 从另一个链代码读取数据。状态 200 但有效负载为空》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

问题内容

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

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

您可以使用 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 链代码调用 .. 运行该方法, 我收到 status: 200,但有效负载为空。

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


解决方案


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

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

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>