我是作曲家游乐场的新手,但遇到标题中提到的错误。我的交易代码有问题。非常感谢您的帮助。
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操场上执行Document_transaction时,存在错误。 我查找了错误,但它们似乎是特定于模型的。因此,我知道该错误也发生在其他人身上。
答案 0 :(得分:1)
getParticipantRegistry
而不是getAssetRegistry
tx.modifier
中的participantRegistry.update()
和tx.document
中的assetRegistry.update()
此处更改了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);
}