我如何在 Hyperledger 1.4.4(示例)的 Node.js 中使用 setTransient 和 getTransient?

How do I work with setTransient and getTransient in Node.js for Hyperledger 1.4.4 (examples)?

此时我无法在 Node.js 中找到有关如何使用 getTransient 的明确示例。也许你可以帮助我 link.

假设我在 Node.js 中有一个客户端应用程序提交了如下内容:

const privatePayload = new Buffer(JSON.stringify({"Args":args})).toString('base64');
const result = await contract.createTransaction(func).setTransient({"privatePayload" : privatePayload}).submit();

在我的 Node.js 链代码中,我有这样的东西:

var MAP = ctx.stub.getTransient();
...

我看到的是数据以

的形式出现
{ privatePayload:
   { key: 'privatePayload'
     value: 
       ByteBuffer {
buffer: <Buffer 0a c1 .... >,
offset: ...,
...
}

我访问这个缓冲区,对其进行解码,发现它不仅包含我的字符串形式的有效载荷,而且还包含 OrgMSP 的名称、证书、通道信息等,所有这些都在一个块中。我的payload在最后。

是否可以直接使用 API 来访问我的负载? 这个缓冲区的实际格式是什么?

尝试chaincodeStub.getTransient().get('key').toString('utf8')

而且您不必将“等待”与 getTransient() 一起使用,因为该函数已经 returns 一个值映射。像这样的东西会起作用:

var MAP = ctx.stub.getTransient();