gpt4 book ai didi

hyperledger-composer - 将关系添加到 hyperledger-composer 中的关系数组

转载 作者:行者123 更新时间:2023-12-04 19:27:45 25 4
gpt4 key购买 nike

在我的 hyperledger composer 应用程序中,我有客户和顾问。客户对已添加到他/她的“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);

}

在我的 Angular 应用程序中,我尝试使用以下代码将几个顾问添加到客户端的 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

我将关系添加到关系数组的方法有什么问题?

最佳答案

我更改了您的交易脚本的 1 行:

transaction.client.readAccessList.concat(transaction.newReadableConsultants);

transaction.client.readAccessList=transaction.client.readAccessList.concat(transaction.newReadableConsultants);

我在 Composer Playground 中进行了测试,我使用的 JSON 数据是:

{
"$class": "org.comp.myapp.AddToReadableConsultantsOfClient",
"client": "resource:org.comp.myapp.Client#MBC01",
"newReadableConsultants": [
"resource:org.comp.myapp.Consultant#C02"
]
}

事务现在可以在 Playground 中运行 - 但我还没有通过 Angular 应用程序进行测试。

关于hyperledger-composer - 将关系添加到 hyperledger-composer 中的关系数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51030392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com