在Hyperledger Composer(19.12版)中,我试图使用@returns装饰器返回资产。当我通过REST API调用该函数时,虽然获得了成功的事务(返回码200),但是没有在响应正文中获得Account对象。这是在数据模型文件,关联的事务功能和REST API调用的响应正文中定义的事务。 Account对象在同一模型文件中定义。
我希望重新获得一个Account JSON对象。我在做什么错了?
交易模型
<a href="{% url 'api-hints1:hints-rud' pk=pk %}">
交易功能
/*
Read only transaction to load account
*/
@commit(false)
@returns(Account)
transaction LoadAccountTx {
o String accountId
}
响应正文:
/**
* function to load account
* @param {org.scsvault.history.LoadAccountTx} loadAccountTx
* @returns {org.scsvault.history.Account} The resulting array of accounts
* @transaction
*/
async function loadAccount(loadAccount)
{
var i = 2;
var factory = getFactory();
var NS = 'org.scsvault.history';
var account = factory.newResource(NS, 'Account', 'ACCOUNT_1');
account.accountType = 'CREDITCARD';
account.balance = 100;
account.openingbalance = 1000;
account.opendate = new Date(2017, i, i);
if (i % 2) {
account.approvalStatus = 'REQUEST_PENDING';
}
else {
account.approvalStatus = 'CREATE';
}
account.status = 'PENDING_APPROVAL';
account.creditlimit = i * 1000;
account.term_months = i;
account.encryptedDescription = account.accountType + ' from Chase';
account.apr = i;
return account;
}
编辑:
为了进一步测试,我将上面的代码更改为简单的字符串返回值,并且没有通过REST API接收到测试字符串。
{
"$class": "org.scsvault.history.LoadAccountTx",
"accountId": "ACCOUNT_1",
"transactionId": "09c9eb722fe3adda41fe0a4d1060ab4efff4c2ca9ad817a763dae81374123b4c"
}
答案 0 :(得分:1)
我有非常相似的问题。我刚刚在GitHub here上打开了一个带有一般示例的问题,并参考了该问题以及Rocketchat上的消息。希望这个问题能尽快解决。
答案 1 :(得分:1)
仅添加到@nicolapaoli所写内容:Hyperledger Composer版本v0.19.13 FYI中已解决此问题-您确实获得了return
值。