I am new to composer playground but get the error mentioned in the title. There is something wrong in my transaction code. Help is greatly appreciated.
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);
}
model
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
}
As mentioned above, the error exists when i perform a Document_transaction in Composer playground. I have looked up the errors but they seem to be very model specific. Therefore, I am aware that the error occured to others as well.
getParticipantRegistry
instead of getAssetRegistry
tx.modifier
in participantRegistry.update()
and tx.document
in assetRegistry.update()
Here Changed 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);
}