У меня есть запрос, который возвращает несколько активов.
Мне нужен пример оболочки транзакций для отображения результатов.
Все, что я могу придумать, первая попытка этого (выполнение запросов). Я исчерпал свой 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?