Как изменить имя функции в Hyperledger - Использование учебника CouchDB? - PullRequest
0 голосов
/ 06 июня 2019

Я прошел учебник по использованию CouchDB без проблем.Теперь, когда я пытаюсь изменить имя функции, я получаю сообщение об ошибке, но когда я запускаю вызовы со старыми именами, они все еще работают.Как правильно обновить имена?

Я следовал учебному пособию Использование CouchDB без каких-либо проблем.Теперь я хочу настроить код для моих целей.Я удалил оставшиеся функции, которые я не хочу использовать, и теперь initMarble и queryMarbles являются единственными двумя вызываемыми функциями.Если я продолжаю в том же духе, это работает, но если я изменяю имена функций на что-то другое, например initPharma и queryPharma, и запускаю initPharma в качестве аргумента, я получаю следующее сообщение об ошибке:

Ошибка: ошибка подтверждения во время вызова.ответ: статус: 500 сообщение: «получен неизвестный вызов функции»

Похоже, что мой скрипт неправильно загружен в контейнер.Когда я делаю изменения, я использую следующие команды:

./byfn.sh down

./byfn.sh up -c mychannel -s couchdb

docker exec -it cli bash

peer chaincode install -n pharma -v 1.0 -p github.com/chaincode/pharma03

export CHANNEL_NAME=mychannel

peer chaincode instantiate -o orderer.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C $CHANNEL_NAME -n pharma -v 1.0 -c '{"Args":["init"]}' -P "OR ('Org0MSP.peer','Org1MSP.peer')"

Обновленный код выглядит следующим образом:

func main() {
    err := shim.Start(new(SimpleChaincode))
    if err != nil {
    fmt.Printf("Error starting Simple chaincode: %s", err)
    }
}

func (t *SimpleChaincode) Init(stub shim.ChaincodeStubInterface) pb.Response {
return shim.Success(nil)
}

func (t *SimpleChaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response {
function, args := stub.GetFunctionAndParameters()
fmt.Println("invoke is running " + function)

if function == "initPharma" { //create a new marble
    return t.initPharma(stub, args)
} else if function == "queryPharma" { //find marbles based on an ad hoc rich query
    return t.queryPharma(stub, args)
}

fmt.Println("invoke did not find func: " + function) //error
return shim.Error("Received unknown function invocation")
}

Как я могу обновить имена своих функций и не застрять с оригинальными именамииз учебника?

1 Ответ

0 голосов
/ 07 июня 2019

Примечание : Этот ответ был предоставлен ФП в качестве редактирования вопроса и перенесен сюда для соответствия правилам сайта.


Решено путем обновления индекса с помощьюновый индекс и удаление старого в интерфейсе Fauxton.Так что в коде нет ошибок, как прокомментировал Анкит Камра.

...