- Start Date: 2020-03-08
- Target Version: 0.14
- Reference Issues: -
- Implementation PR: -
Summary
We should extend the current Action Hooks feature. It is used by the ActionHook middleware and it can be defined only before, after & error hooks for actions.
For some major components, it would be good if the user can define custom hooks for the custom functions, e.g. define a beforeTransform or afterPopulate hook in moleculer-db.
Basic example
module.exports = {
name: "posts",
mixins: [DbService],
hooks: {
// It will be called before transforming
beforeTransform(ctx, params, doc) {
doc.id = encrypt(doc._id);
delete doc._id;
},
// It will be called after populating
afterPopulate(ctx, populate, doc) {
if (doc.author) {
delete doc.authorID;
}
}
},
};
function transformDocuments(ctx, params, doc) {
// Call beforeTransform hook
if (this.hooks.beforeTransform) {
await this.hooks.beforeTransform(ctx, params, doc);
}
// Do transforming
// Call afterTransform hook
if (this.hooks.afterTransform) {
await this.hooks.afterTransform(ctx, params, doc);
}
}
Motivation
Detailed design
Drawbacks
Alternatives
Adoption strategy
Unresolved questions
Summary
We should extend the current Action Hooks feature. It is used by the ActionHook middleware and it can be defined only
before,after&errorhooks for actions.For some major components, it would be good if the user can define custom hooks for the custom functions, e.g. define a
beforeTransformorafterPopulatehook in moleculer-db.Basic example
Motivation
Detailed design
Drawbacks
Alternatives
Adoption strategy
Unresolved questions