美文网首页
fabric之chaincode方法GetStateByPart

fabric之chaincode方法GetStateByPart

作者: 时间里的小恶魔 | 来源:发表于2018-08-24 17:23 被阅读367次

GetStateByPartialCompositeKey根据查询账中给定的部分复合键返回一个迭代器可用于遍历所有前缀匹配的复合键。 objectType和属性是预计只有有效的utf8字符串,不应该包含 U + 0000(零字节)和U + 10FFFF(最大和未分配的代码点)。请参阅相关函数SplitCompositeKey和CreateCompositeKey。(一般用于需要查询组合key中所有的信息)

func (sc *SimpleChaincode) queryAllOwner(stub shim.ChaincodeStubInterface) pb.Response {
    coloredMarbleResultsIterator, err := stub.GetStateByPartialCompositeKey(INDEX, []string{})
    if err != nil {
        return shim.Error(err.Error())
    }
    defer coloredMarbleResultsIterator.Close()

    var buffer bytes.Buffer
    buffer.WriteString("[")

    bArrayMemberAlreadyWritten := false

    for coloredMarbleResultsIterator.HasNext() {

        responseRange, err := coloredMarbleResultsIterator.Next()
        if err != nil {
            return shim.Error(err.Error())
        }
        _, compositeKeyParts, err := stub.SplitCompositeKey(responseRange.Key)
        if err != nil {
            return shim.Error(err.Error())
        }
        // name := compositeKeyParts[0]
        // hashvalue := compositeKeyParts[1]
        owner := compositeKeyParts[2]

        // Add a comma before array members, suppress it for the first array member
        if bArrayMemberAlreadyWritten == true {
            buffer.WriteString(",")
        }
        buffer.WriteString("{\"owner\":")
        buffer.WriteString("\"")
        buffer.WriteString(owner)
        buffer.WriteString("\"")

        buffer.WriteString("}")
        bArrayMemberAlreadyWritten = true

    }

    buffer.WriteString("]")

    fmt.Printf("- getHistoryForMarble returning:\n%s\n", buffer.String())

    return shim.Success(buffer.Bytes())
}


运行结果:


image.png

相关文章

网友评论

      本文标题:fabric之chaincode方法GetStateByPart

      本文链接:https://www.haomeiwen.com/subject/uuriiftx.html