Hyperledger fabric Can';t在hyperledger结构中更改车辆的所有者

Hyperledger fabric Can';t在hyperledger结构中更改车辆的所有者,hyperledger-fabric,hyperledger-chaincode,Hyperledger Fabric,Hyperledger Chaincode,我试图创建一个汽车包,但当我调用transport chaincode来更改包中汽车的所有者时,其所有者没有更改 您的代码中有几个问题 在'InitPackage'方法中,您正在添加空的cars数组(您应该在其中添加car数组) 在“传输”方法中,for循环不正确。您正在对字符串变量“cNum”执行循环。根据您的代码,无论何时调用'AddCarsToPkg'方法,程序包的'cNum'变量都会存储一个新值(或不保留旧的车号) 我心里有解决办法。这可能对你有帮助。 即: 将“cNum”添加为“Ca

我试图创建一个汽车包,但当我调用transport chaincode来更改包中汽车的所有者时,其所有者没有更改


您的代码中有几个问题

  • 在'InitPackage'方法中,您正在添加空的cars数组(您应该在其中添加car数组)
  • 在“传输”方法中,for循环不正确。您正在对字符串变量“cNum”执行循环。根据您的代码,无论何时调用'AddCarsToPkg'方法,程序包的'cNum'变量都会存储一个新值(或不保留旧的车号)
  • 我心里有解决办法。这可能对你有帮助。 即:

    • 将“cNum”添加为“Car”结构的元素,并从“Packages”结构中删除此元素
    • 在“PutState”之前,还设置了Car元素“cNum”的值
    • 在“传输”方法中,将for循环替换为以下给定代码

    对不起,那是我的错误代码,我的代码和你一样,只是我的初始包是空的,但它们仍然不起作用,我通过运行AddCarsToPkg方法将我的状态更改为“移交”,但是我不能更改我的所有者您可以看到我的结果只有当我将汽车包更改为一个护理包@将包结构字段更改为导出字段,方法是以大写字母开头(下面的示例)键入Packages struct{Cars[]Car
    json:“Cars”
    Status string
    json:“Status”
    CNum[]字符串
    json:“cNum”
    }使用代码(在下面的链接中)
    
        for i := range tempPkg.cars {
            carIndex := tempPkg.cars[i].cNum
            car, _ := s.QueryCar(ctx, carIndex)
            car.Owner = newOwner
            car.Status = "Handed Over"
            carAsBytes, _ := json.Marshal(*car)
            err := ctx.GetStub().PutState(carIndex, carAsBytes)
            if err != nil {
                return fmt.Errorf("Error in Puting state to data base%s", err.Error())
            }
            tempPkg.cars[i].Owner = newOwner
            tempPkg.cars[i].Status = "Handed Over"
        }