Я прошел учебник по использованию 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")
}
Как я могу обновить имена своих функций и не застрять с оригинальными именамииз учебника?