How to with Fabric Chaincode返回“不允许附加属性记录” [英] how do to with fabric chaincode return “Additional property records is not allowed”

查看:16
本文介绍了How to with Fabric Chaincode返回“不允许附加属性记录”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用";github.com/hyperledger/fabric-contract-api-go/contractapi";

编写链码时出错
type PaginatedQueryResult struct {
   Records             []asset `json:"records"`   
   FetchedRecordsCount int32  `json:"fetchedRecordsCount"`   
   Bookmark            string `json:"bookmark"`   
   Completed           bool   `json:"completed"`
}
当记录为空时,报告错误:";ASSET_TRANSPORT_LEDGER链码值与架构不匹配: 1.rereturn.Records:类型无效。预期:数组,给定:空,然后更新 PaginatedQueryResult结构如下:

type PaginatedQueryResult struct {
   Records             []asset `json:"records,omitempty" metadata:",optional" `  
   FetchedRecordsCount int32  `json:"fetchedRecordsCount"`   
   Bookmark            string `json:"bookmark"`   
   Completed           bool   `json:"completed"`
}

如果Records为nil,这是可以的,但是当Records不为nil时,会出现错误:";不允许额外的属性记录";

推荐答案

感谢您发布这篇文章,您让我发现了代码中的错误。问题是,代码假定json标记仅是名称,并且不期望,omitempty,因此元数据模式最终具有属性records,omitempty,因此当提供记录值时,在模式中找不到该属性作为有效属性。由于元数据标记覆盖了任何JSON值,因此在核心代码固定之前的解决方案是将名称添加到元数据标记和JSON中,因此您的结构将变为:

type PaginatedQueryResult struct {
   Records             []asset `json:"records,omitempty" metadata:"records,optional" `  
   FetchedRecordsCount int32  `json:"fetchedRecordsCount"`   
   Bookmark            string `json:"bookmark"`   
   Completed           bool   `json:"completed"`
}

请注意,出于封送目的,记录位于JSON标记和METADATA标记中。

我已在此处打开了此问题的JIRA:https://jira.hyperledger.org/browse/FABCAG-31

这篇关于How to with Fabric Chaincode返回“不允许附加属性记录”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆