В моём приложении для составления гиперлогов у меня есть клиенты и консультанты.Клиент имеет доступ на чтение к Консультантам, которые были добавлены в его / ее "readAccessList".
Вот модели этих двух типов участников:
participant Client identified by id {
o String id
o String name
--> Consultant[] readAccessList optional
}
participant Consultant identified by id {
o String id
o String name
o String text
}
Транзакция для добавления консультантов вreadAccessList клиентов определяется следующим образом:
transaction AddToReadableConsultantsOfClient {
--> Client client
--> Consultant[] newReadableConsultants
}
Функция процессора транзакций для этой транзакции следующая:
/**
* transaction AddToReadableConsultantsOfClient
* @param {org.comp.myapp.AddToReadableConsultantsOfClient} transaction
* @transaction
*/
async function addToReadableConsultantsOfClient(transaction) {
// Save the old version of the client:
const clientOld = transaction.client;
// Update the client with the new readableConsultants:
transaction.client.readAccessList.concat(transaction.newReadableConsultants);
// Get the participant registry containing the clients:
const participantRegistry = await getParticipantRegistry('org.comp.myapp.Client');
// Update the client in the participant registry:
await participantRegistry.update(transaction.client);
// Emit an event for the modified client:
let event = getFactory().newEvent('org.comp.myapp', 'ClientUpdated');
event.clientOld = clientOld;
event.clientNew = transaction.client;
emit(event);
}
В моем угловом приложении я пытаюсь добавить паруКонсультанты readAccessList клиента, используя следующий код:
//Note that the consultants referred to in the following array do actually exist:
let consultants = ["resource:org.comp.myapp.Consultant#1", "resource:org.comp.myapp.Consultant#2"];
this.transaction = {
$class: "org.comp.myapp.AddToReadableConsultantsOfClient",
"client": "resource:org.comp.myapp.Client#" + this.clientId,
"newReadableConsultants": consultants,
"timestamp": new Date().getTime()
};
return this.addToReadableConsultantsOfClientService.addTransaction(this.transaction)
.toPromise()
.then(() => {
this.errorMessage = null;
})
.catch((error) => {
if(error == 'Server error'){
this.errorMessage = "Could not connect to REST server. Please check your configuration details.";
}
else if(error == '404 - Not Found'){
this.errorMessage = "404 - Could not find API route. Please check your available APIs."
}
else{
this.errorMessage = error;
}
});
По некоторым причинам это не работает.Консультанты не добавляются в «readAccessList» клиента (который остается пустым).
В консоли появляется странное сообщение об ошибке, в котором говорится следующее:
Error: 2 UNKNOWN: error executing chaincode: transaction returned with failure: ReferenceError: org is not defined
Что не так с моим подходом к добавлению отношений в массив отношений?