gpt4 book ai didi

hyperledger-fabric - 如何使用 fabric 链代码返回 “Additional property records is not allowed”

转载 作者:行者123 更新时间:2023-12-05 02:48:31 26 4
gpt4 key购买 nike

当我使用“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"`
}

当Record为nil时,报错:“asset_transfer_ledger chaincode Value did not match schema:\n 1. return.records: Invalid type. Expected: array, given: null”,然后我更新像这样的 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,这没问题,但当Record不为nil时,报错:“Additional property records is not allowed”

最佳答案

感谢您发布这篇文章,您让我发现了代码中的错误。问题是代码假定 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 标记和元数据标记中。

我在这里为这个问题打开了一个 JIRA:https://jira.hyperledger.org/browse/FABCAG-31

关于hyperledger-fabric - 如何使用 fabric 链代码返回 “Additional property records is not allowed”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64442488/

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