hyperledger作曲家@returns无法正常工作

时间:2018-07-11 19:26:36

标签: hyperledger hyperledger-composer

在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"
}

2 个答案:

答案 0 :(得分:1)

我有非常相似的问题。我刚刚在GitHub here上打开了一个带有一般示例的问题,并参考了该问题以及Rocketchat上的消息。希望这个问题能尽快解决。

答案 1 :(得分:1)

仅添加到@nicolapaoli所写内容:Hyperledger Composer版本v0.19.13 FYI中已解决此问题-您确实获得了return值。