预期的资源或概念
Resource or concept expected
我是 composer playground 的新手,但遇到标题中提到的错误。我的交易代码有问题。非常感谢帮助。
logic.js:
/**
* Make an entry for the action performed
* @param {org.gbpcs.network.Document_Transaction} tx - transaction that contains the document,
the user and the new action taken.
* @transaction
*/
async function documentAction(tx) {
// add document action to user story
tx.modifier.actions.push(tx.action.action_id);
let assetRegistry = await getAssetRegistry('org.gbpcs.network.User')
// persist the state of the user
await assetRegistry.update(tx.modifier.actions);
// add document action to document story
tx.document.actions.push(tx.action.action_id);
assetRegistry = await getAssetRegistry('org.gbpcs.network.Document')
// persist the state of the document actions
await assetRegistry.update(tx.document.actions);
// emit a notification that entry was made
let actionNotification = getFactory().newEvent('org.gbpcs.network', 'Action_Notification');
actionNotification.document = tx.document;
actionNotification.user = tx.modifier;
emit(actionNotification);
}
型号
namespace org.gbpcs.network
enum OPERATION {
o READ
o WRITE
o UPDATE
o DELETE
o CREATE
}
asset Document identified by document_id{
o String document_id
// list of action_ids
o String[] actions
}
participant User identified by user_id {
o String user_id
// list of actions_ids
o String[] actions
}
asset Document_Action identified by action_id {
o String action_id
o DateTime time
o Boolean success
o OPERATION operation
}
transaction Document_Transaction {
// document action was performed upon
--> Document document
// user that performed this action
--> User modifier
// action that was performed upon the document
--> Document_Action action
}
event Action_Notification {
--> User user
--> Document document
}
如上所述,当我在 Composer playground 中执行 Document_transaction 时存在错误。
我已经查找了错误,但它们似乎是特定于模型的。因此,我知道该错误也发生在其他人身上。
- tx.modifier 是参与者用户而非资产的引用,因此您需要
getParticipantRegistry
而不是 getAssetRegistry
- 您只需更新
participantRegistry.update()
中的 tx.modifier
和 assetRegistry.update()
中的 tx.document
这里改了login.js
/**
* Make an entry for the action performed
* @param {org.gbpcs.network.Document_Transaction} tx - transaction that contains the document,
the user and the new action taken.
* @transaction
*/
async function documentAction(tx) {
// add document action to user story
tx.modifier.actions.push(tx.action.action_id);
let participantRegistry = await getParticipantRegistry('org.gbpcs.network.User')
// persist the state of the user
await participantRegistry.update(tx.modifier);
// add document action to document story
tx.document.actions.push(tx.action.action_id);
let assetRegistry = await getAssetRegistry('org.gbpcs.network.Document')
// persist the state of the document actions
await assetRegistry.update(tx.document);
// emit a notification that entry was made
let actionNotification = getFactory().newEvent('org.gbpcs.network', 'Action_Notification');
actionNotification.document = tx.document;
actionNotification.user = tx.modifier;
emit(actionNotification);
}
我是 composer playground 的新手,但遇到标题中提到的错误。我的交易代码有问题。非常感谢帮助。
logic.js:
/**
* Make an entry for the action performed
* @param {org.gbpcs.network.Document_Transaction} tx - transaction that contains the document,
the user and the new action taken.
* @transaction
*/
async function documentAction(tx) {
// add document action to user story
tx.modifier.actions.push(tx.action.action_id);
let assetRegistry = await getAssetRegistry('org.gbpcs.network.User')
// persist the state of the user
await assetRegistry.update(tx.modifier.actions);
// add document action to document story
tx.document.actions.push(tx.action.action_id);
assetRegistry = await getAssetRegistry('org.gbpcs.network.Document')
// persist the state of the document actions
await assetRegistry.update(tx.document.actions);
// emit a notification that entry was made
let actionNotification = getFactory().newEvent('org.gbpcs.network', 'Action_Notification');
actionNotification.document = tx.document;
actionNotification.user = tx.modifier;
emit(actionNotification);
}
型号
namespace org.gbpcs.network
enum OPERATION {
o READ
o WRITE
o UPDATE
o DELETE
o CREATE
}
asset Document identified by document_id{
o String document_id
// list of action_ids
o String[] actions
}
participant User identified by user_id {
o String user_id
// list of actions_ids
o String[] actions
}
asset Document_Action identified by action_id {
o String action_id
o DateTime time
o Boolean success
o OPERATION operation
}
transaction Document_Transaction {
// document action was performed upon
--> Document document
// user that performed this action
--> User modifier
// action that was performed upon the document
--> Document_Action action
}
event Action_Notification {
--> User user
--> Document document
}
如上所述,当我在 Composer playground 中执行 Document_transaction 时存在错误。 我已经查找了错误,但它们似乎是特定于模型的。因此,我知道该错误也发生在其他人身上。
- tx.modifier 是参与者用户而非资产的引用,因此您需要
getParticipantRegistry
而不是getAssetRegistry
- 您只需更新
participantRegistry.update()
中的tx.modifier
和assetRegistry.update()
中的
tx.document
这里改了login.js
/**
* Make an entry for the action performed
* @param {org.gbpcs.network.Document_Transaction} tx - transaction that contains the document,
the user and the new action taken.
* @transaction
*/
async function documentAction(tx) {
// add document action to user story
tx.modifier.actions.push(tx.action.action_id);
let participantRegistry = await getParticipantRegistry('org.gbpcs.network.User')
// persist the state of the user
await participantRegistry.update(tx.modifier);
// add document action to document story
tx.document.actions.push(tx.action.action_id);
let assetRegistry = await getAssetRegistry('org.gbpcs.network.Document')
// persist the state of the document actions
await assetRegistry.update(tx.document);
// emit a notification that entry was made
let actionNotification = getFactory().newEvent('org.gbpcs.network', 'Action_Notification');
actionNotification.document = tx.document;
actionNotification.user = tx.modifier;
emit(actionNotification);
}