Невозможно добавить значения в существующий JSON-ответ в Hyperledger Composer Rest Api - PullRequest
0 голосов
/ 05 сентября 2018

Мой код для создания кошелька с помощью REST API для создания компоновщика гиперлогов:

async function walletCreation(tx) {
var userId = {
userId: tx.userId,
};
var walletPassword = {
walletPassword: tx.walletPassword,
};

const encryptWalletId = await request.post({ uri: 
'http://payment.api.in/encrypt', json: userId });
const encryptWalletPassword = await request.post({ uri: 
'http://payment.api.in/encryptPass', json: walletPassword });
 return getAssetRegistry('com.payment.UserWallet')
.then(function (userAssetRegistry) {
  // Get the factory for creating new asset instances.
var factory = getFactory();
  // Create the wallet.
tx.walletId = encryptWalletId.walletId;
var walletAsset = factory.newResource('com.payment', 'UserWallet', 
tx.walletId);
walletAsset.userId = tx.userId;
walletAsset.walletPassword = encryptWalletPassword.walletPassword;
walletAsset.currency = tx.currency;
walletAsset.walletBalance = 0;
walletAsset.createdDate = new Date();
userAssetRegistry.add(walletAsset);


})
.catch(function (error) {

throw new Error("wallet creation failed");

});

}

Ниже приведено тело запроса (ввод Swagger) для создания кошелька. :

{
  "$class": "com.payment.WalletCreation",
  "userId": "Hari",
  "walletPassword": "hari@123",
  "currency": "INR",
  "walletBalance": 0
}

Ниже приведен ожидаемый ответ для вышеуказанного ввода:

 {
   "$class": "com.payment.WalletCreation",
   "userId": "Hari",
   "status":"Wallet creation successfully",
   "WalletId":"1234567asder",
   "walletId": 0,
   "walletPassword": "hari@123",
   "currency": "INR",
   "walletBalance": 0,
   "transactionId": 
   "deee486e2e74647635e53e316f2a8e1b71ab500e9dd3bf15945665a4025fc208"
  }

Но это то, что я получаю в ответ

  {
  "$class": "com.payment.WalletCreation",
  "userId": "Hari",
  "walletPassword": "hari@123",
  "currency": "INR",
  "walletBalance": 0,
  "transactionId": 
  "deee486e2e74647635e53e316f2a8e1b71ab500e9dd3bf15945665a4025fc208"
 }

Пожалуйста, помогите мне исправить это, застрял на 2 дня, не может исправить ошибку

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Возвращение сложного типа из функции процессора транзакций

Ссылка: https://hyperledger.github.io/composer/latest/reference/js_scripts#returning-data-from-transaction-processor-functions

Файл модели:


    namespace org.sample

    concept MyConcept {
        o String value
    }

    <b>@returns(MyConcept)</b>
    transaction MyTransaction {

    }

Функция процессора транзакций:


    /**
     * Handle a transaction that returns a concept.
     * @param {org.sample.MyTransaction} transaction The transaction.
     * <b>@returns {org.sample.MyConcept} The concept.</b>
     * @transaction
     */
    async function myTransaction(transaction) {
        const factory = getFactory();
        const concept = factory.newConcept('org.sample', 'MyConcept');
        concept.value = 'hello world!';
        return concept;
    }

Профиль ZB @ zeimbeekor

Bye!

0 голосов
/ 06 сентября 2018
  1. В https://hyperledger.github.io/composer/latest/integrating/call-out (3-й кодовый блок) есть пример того, что именно вы пытаетесь сделать, например (замените его ниже)

    К вашему сведению, вы не можете переназначить tx.walletId (это часть ввода транзакции!). Также новая Дата () не является детерминированной.

  2. Ответ полностью соответствует тому, что вы ожидаете от сообщения TRANSACTION - вам нужно проверить ваш экземпляр ASSET (вы создаете) в реестре com.payment.UserWallet, используя / GET, для актива, который вы добавляешь. Кроме того, ваш ожидаемый ответ не будет соответствовать вашей функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...