- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
func (t *ballot) initBallot(stub shim.ChaincodeStubInterface, args []string) peer.Response {
if len(args) != 2 {
return shim.Error("Incorrect number of arguments. Expecting 2")
}
// ==== Input sanitation ====
fmt.Println("- start init ballot")
if len(args[0]) == 0 {
return shim.Error("1st argument must be a non-empty string")
}
if len(args[1]) == 0 {
return shim.Error("2nd argument must be a non-empty string")
}
personFirstName := args[0]
personLastName := args[1]
hash := sha256.New()
hash.Write([]byte(personFirstName + personLastName)) // ballotID is created based on the person's name
ballotID := hex.EncodeToString(hash.Sum(nil))
voteInit := "VOTE INIT"
// ==== Create ballot object and marshal to JSON ====
Ballot := ballot{personFirstName, personLastName, ballotID, voteInit}
ballotJSONByte, err := json.Marshal(Ballot)
if err != nil {
return shim.Error(err.Error())
}
err = stub.PutState(string(ballotID), ballotJSONByte)
//FIXME:0-------------------------------------------------
ballotAsByte, err := stub.GetState(string(ballotID))
if err != nil {
return shim.Error(err.Error())
}
BBBallot := ballot{}
//umarshal the data to a new ballot struct
json.Unmarshal(ballotAsByte, &BBBallot)
//
fmt.Println(BBBallot)
fmt.Println(BBBallot.personFirstName)
return shim.Success([]byte(ballotID))
}
上面是代码,这是我正在运行的测试脚本
func Test_Invoke_initBallot(t *testing.T) {
scc := new(ballot)
stub := shim.NewMockStub("voting", scc)
res := stub.MockInvoke("1", [][]byte{[]byte("initBallot"), []byte("John"), []byte("C")})
if res.Status != shim.OK {
t.Log("bad status received, expected: 200; received:" + strconv.FormatInt(int64(res.Status), 10))
t.Log("response: " + string(res.Message))
t.FailNow()
}
if res.Payload == nil {
t.Log("initBallot failed to create a ballot")
t.FailNow()
}
}
我试图在放入交易后从分类帐中读取。但是,我从两个 Println 语句中得到的响应都是空的。
// PutState puts the specified `key` and `value` into the transaction's
// writeset as a data-write proposal. PutState doesn't effect the ledger
// until the transaction is validated and successfully committed.
// Simple keys must not be an empty string and must not start with null
// character (0x00), in order to avoid range query collisions with
// composite keys, which internally get prefixed with 0x00 as composite
// key namespace.
PutState(key string, value []byte) error
文档中确实提到 putState 在验证之前不会将交易提交到账本,但我只是想在不设置结构网络的情况下使用 MockStub 测试我的链代码。这个问题的解决方法是什么?
P.S 问题已经解决,这里是设置struct的正确方法
type ballot struct {
PersonFirstName string
PersonLastName string
BallotID string
VoteInit string
}
最佳答案
您还没有提供选票结构的代码。但是根据您提供的内容,我猜可能会发生什么。我认为您可能还没有导出字段,您的结构如下所示:
type ballot struct {
personFirstName string
personLastName string
ballotID string
voteInit string
}
但是当您尝试使用 json.Marshal(Ballot)
将该对象转换为 JSON 时,没有任何字段被添加到 JSON 对象,因为它们没有被导出。在这种情况下,您所要做的就是导出必要的字段(在字段名称的开头使用大写字母)。您更新后的结构应如下所示:
type ballot struct {
PersonFirstName string
PersonLastName string
BallotID string
VoteInit string
}
这是很多新手常犯的错误。祝你在未来的旅程中一切顺利!!!
附言请编辑您的问题并在此处添加投票结构的代码,即使此解决方案解决了您的问题,因为这可能会在将来帮助其他人。另外,请为代码添加适当的缩进,并在代码块中添加最后一个 } 符号。
关于go - Chaincode GetState 返回空响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53437717/
我一直在尝试将 Redux 集成到项目中。 我按照使用示例进行操作,但收到错误store.getState is not a function。 所以我知道其他人也问过类似的问题,但情况略有不同。 R
我正在尝试将 react 粘性标题添加到我的步进器中。 但问题是,如果我在 App.js 中添加它,它就不会渲染。 所以我开始调试 App.js 代码。 如果我在 App.js 的渲染方法中提供控制台
我是使用线程的新手,我正在尝试找出一种方法来判断线程是否终止,以及从线程收集一些信息。但是,每当我尝试调用其中一个线程的方法(包括 thread.getState())时,我都会收到空指针异常。请我想
我有这个字节码: new java.lang.Object // stack is [newObjectRef] dup // Stack is [newObjectR
我对 redux 中的 getState() 有点困惑。我正在使用 thunk 中间件。 我有一个身份验证操作,它是一个异步操作。但是我有一个在其之前运行的操作,它检查状态中是否存在 token 以及
很难说出这里问的是什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或言辞激烈,无法以目前的形式合理回答。如需帮助澄清此问题以便可以重新打开,visit the help center . 8年前关闭
我正在构建一个同构的 React 应用程序,并且当用户发送请求时执行以下任务: 1) 假设用户点击 /about-us,react-routers matchPath 找到合适的组件并返回它。 2)
我有一个 React 应用程序,现在我使用 redux。该应用程序运行正常,但现在我收到错误: Uncaught TypeError: Cannot read property 'getState'
我想使用 SlidingPaneLayout.getState();但没有找到。是否被删除以及何时删除? public void showAudioPlayer() { mActivi
我如何从 zfcUser 获取状态 在 view/index.phtml 中,我从 $this->zfcUserIdentity()->getState(); 获取它; 但现在我需要在其他模块/ Co
我在 React Native 中的商店遇到了一些问题。我在我的文件 store/index.js 中配置了存储。我将其导出,然后导入到 App.js 中。来自 reducer 的 Action 正确
我想断言,当函数使用 store.getState() 获取我的 redux 状态值时,它会根据该状态的条件执行各种操作。对于使用 store.getState() 方法的某些测试,我如何断言/模拟我
让我坚持了好几天的问题是,虽然我的 redux devtool 显示状态更新成功,没有任何类型的突变,并且 View 组件重新渲染成功,但是当我调用 getState() 时,它总是返回初始状态并且不
我有一个下面的 Singleton 类,在我的 getStatement 方法中,我通过执行 if 检查来填充 CHM。 public class CacheHolder { private st
我正在尝试获取 webRTC 应用程序的统计信息以测量音频/视频流带宽。我检查了这个 question我发现它非常有用;但是,当我尝试使用它时,我得到了 TypeError: Not enough a
func (t *ballot) initBallot(stub shim.ChaincodeStubInterface, args []string) peer.Response { if
我正在尝试使用 redux 制作一个 nextjs 应用程序,并且我正在设置基本框架。 它如下所示。 服务器.js const express = require("express"); const
我昨天刚开始使用 redux,在阅读了不同的库之后,我决定使用 RTK 的切片路由。 对于我的异步,我决定使用 RTK 查询而不是使用 createAsyncThunk,并且我对从另一个切片访问状态的
我正在尝试使用 WebRTC 的 api 中的 getStat() 来查看它是否提供了任何有用的信息测量延迟和其他视频流数据。问题是关于如何使用它的信息并不多。 即使是较旧的现有示例也非常罕见,但此后
假设我在全局商店中有很多实体 苹果 商店 果汁 如果我想要函数 getAppleJuicePrice,我可以通过 2-3 种方式实现 通过参数 function getAppleJuicePrice(
我是一名优秀的程序员,十分优秀!