Мне нужен пример оболочки транзакции для запроса, который возвращает несколько значений - PullRequest
0 голосов
/ 15 мая 2019

У меня есть запрос, который возвращает несколько активов.

Мне нужен пример оболочки транзакций для отображения результатов.

Все, что я могу придумать, первая попытка этого (выполнение запросов). Я исчерпал свой Google Фу, примеры, кажется, не очень хорошо охватывают это. Я посмотрел на штрафы водителя и другие примеры.

query getCattleForOwner {

description: "Select all cattle for farmer"

statement:

SELECT org.example.hooftotable.Cattle

WHERE (Farmer == _$owner)

}

против актива и участника:

abstract asset Animal identified by animalId {

 o String animalId

 --> Owner owner

 o String sex

 o String breed

 o Double acquireweight

 o DateTime dateexpiry

 o Double currweight optional

 // animal can be born or bought

 o DateTime dob

 o DateTime acquiredate optional

 // animal can be sold or killed

 o DateTime killdate optional

 o String killreason optional

 o DateTime dateshipped optional

 o DateTime datereceived optional

 // animals are usually ided by an eartag

 o String eartag

 // animals are sold by the pound

 o Double priceperpound optional

 // processor usually charge by animal/weight

 --> Transporter transporter optional

 o String typeoffeed

 o String grade optional

 --> Processor processor optional

 o Double processingfee optional

 o DateTime processingdate optional

 o Double wasteweight optional

 o Boolean processed default = false

}

asset Cattle extends Animal {

o String type default = 'Beef'

o Boolean dehorned default = false

o Boolean castrated default = false

}

abstract participant Owner identified by ownerid {

o String ownerid

o String firstname

o String lastname

o String street

o String streetaddress

o String city

o String state

o String zip

o String phone

}

participant Farmer extends Owner {

 o String type default = 'Farmer'

// animals for sale are from registered farmers

o String farmregcode

}

И я пытаюсь использовать эту оболочку транзакции:

async function CallgetCattleforOwner(owner) {

const cattle = [];

const cattleRegistry = await

getAssetRegistry('org.example.hooftotable.Cattle);

const results = await query('getCattleforOwner', {owner:'tx.owner'});

for (let n = 0; n < results.length; n++) {

let cattle = results[n];}

Подано с использованием площадки hyperledger с использованием:

{
"$class": "org.example.hooftotable.CallgetCattleforOwner",
"owner":"resource:org.example.hooftotable.Farmer#XdyQXV3k0Z239wuv"
}

Получившаяся ошибка:

Ошибка: объект с идентификатором 'Asset: org.sample.hooftotable.Cattle' в коллекции с идентификатором '$ sysregistries' не существует

Я хочу получить список крупного рогатого скота, принадлежащего конкретному фермеру, который не был обработан и не был убит по какой-то другой причине. Я хочу, чтобы он отображался на игровой площадке композитора и, в конечном счете, в угловом интерфейсе.

Я изменил транзакцию на:

   async function CallgetCattleforOwner (owner){
      var x = 0;
      return getAssetRegistry('org.example.hooftotable.Cattle')
      .then(function (assetRegistry) {
        return query('getCattleForOwner',{'owner':owner})
        .then (function (results) {
          x = results.length;
          for (var n = 0; n < results.length; n++) {
            var cattle = results[n];
            var QueryCattle = getFactory().newEvent('org.example.hooftotable','QueryCattle');
            QueryCattle.cattle = cattle;
            emit(QueryCattle);
            console.log(QueryCattle);
          }
        });
               });
      console.log(x);
    }

Теперь он выполняется без ошибок, но также не генерирует никаких событий и как я могу увидеть результаты вызовов console.log?

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