Query Events
Introduction
The query builder serves as the most internal layer for other operations such as Models and Aggregate. Let's explore the events associated with the query builder.
On Creating Event
This event is triggered before creating a new document or documents.
Method Signature:
public onCreating(callback: (payload: CreatingEventPayload) => void): this;
import { query } from "@mongez/monpulse";
function main() {
query.onCreating(({ collection, query, data, isMany }) => {
// do something
});
// will trigger the `onCreating` event when creating a new document
query.create("users", { name: "John Doe" });
// will trigger the `onCreating` event when creating many documents
query.createMany("users", [{ name: "John Doe" }, { name: "Jane Doe" }]);
}
main();
The payload contains the following properties:
collection
: The collection name.query
: The Collection Querydata
: The data to be inserted.isMany
: A boolean value that indicates if the operation is for many documents or not.
That event is triggered when calling create
or createMany
methods.
On Created Event
This event is triggered after creating a new document or documents.
Method Signature:
public onCreated(callback: (payload: CreatedEventPayload) => void): this;
import { query } from "@mongez/monpulse";
function main() {
query.onCreated(({ collection, document, documents, data, isMany }) => {
// do something
});
// will trigger the `onCreated` event after creating a new document
query.create("users", { name: "John Doe" });
// will trigger the `onCreated` event after creating many documents
query.createMany("users", [{ name: "John Doe" }, { name: "Jane Doe" }]);
}
main();
The payload contains the following properties:
collection
: The collection name.document
: The created document, exists when callingcreate
method.documents
: The created documents, exists when callingcreateMany
method.data
: The data that was inserted.isMany
: A boolean value that indicates if the operation is for many documents or not.
That event is triggered when calling create
or createMany
methods.
On Updating Event
This event is triggered before updating a document or documents.
Method Signature:
public onUpdating(callback: (payload: UpdatingEventPayload) => void): this;
import { query } from "@mongez/monpulse";
function main() {
query.onUpdating(
({ collection, query, data, isMany, filter, updateOptions, options }) => {
// do something
}
);
// will trigger the `onUpdating` event when updating a document
const filter = { name: "John Doe" };
query.update("users", filter, { name: "Jane Doe New Name" });
// will trigger the `onUpdating` event when updating many documents
query.updateMany("users", filter, {
$set: {
name: "Jane Doe New Name",
},
});
}
The payload contains the following properties:
collection
: The collection name.query
: The Collection Querydata
: The data to be updated.isMany
: A boolean value that indicates if the operation is for many documents or not.filter
: The filter that will be used to update the document or documents based on it.updateOptions
: This is the Update Filter object which is the second argument ofupdateMany
methodoptions
: Update options, will be passed only when callingupdateMany
method.
That event is triggered when calling update
or updateMany
methods.
On Updated Event
This event is triggered after updating a document or documents.
Method Signature:
public onUpdated(callback: (payload: UpdatedEventPayload) => void): this;
import { query } from "@mongez/monpulse";
function main() {
query.onUpdated(
({
collection,
document,
documents,
data,
isMany,
filter,
updateOptions,
options,
result,
}) => {
// do something
}
);
// will trigger the `onUpdated` event after updating a document
const filter = { name: "John Doe" };
query.update("users", filter, { name: "Jane Doe New Name" });
// will trigger the `onUpdated` event after updating many documents
query.updateMany("users", filter, {
$set: {
name: "Jane Doe New Name",
},
});
}
The payload contains the following properties:
collection
: The collection name.document
: The updated document, exists when callingupdate
method.documents
: The updated documents, exists when callingupdateMany
method.data
: The data that was updated.isMany
: A boolean value that indicates if the operation is for many documents or not.filter
: The filter that was used to update the document or documents based on it.updateOptions
: This is the Update Filter object which is the second argument ofupdateMany
method.options
: Update options, will be passed only when callingupdateMany
method.result
: The Update Result object.
That event is triggered when calling update
or updateMany
methods.
On Deleting Event
This event is triggered before deleting a document or documents.
Method Signature:
public onDeleting(callback: (payload: DeletingEventPayload) => void): this;
import { query } from "@mongez/monpulse";
function main() {
query.onDeleting(({ collection, query, filter, isMany }) => {
// do something
});
// will trigger the `onDeleting` event when deleting a document
const filter = { name: "John Doe" };
query.deleteOne("users", filter);
// will trigger the `onDeleting` event when deleting many documents
query.deleteMany("users", filter);
}
The payload contains the following properties:
collection
: The collection name.query
: The Collection Queryfilter
: The filter that will be used to delete the document or documents based on it.isMany
: A boolean value that indicates if the operation is for many documents or not.
That event is triggered when calling deleteOne
or deleteMany
methods.
On Deleted Event
This event is triggered after deleting a document or documents.
Method Signature:
public onDeleted(callback: (payload: DeletedEventPayload) => void): this;
import { query } from "@mongez/monpulse";
function main() {
query.onDeleted(
({ collection, isDeleted, filter, isMany, count, result }) => {
// do something
}
);
// will trigger the `onDeleted` event after deleting a document
const filter = { name: "John Doe" };
query.delete("users", filter);
// will trigger the `onDeleted` event after deleting many documents
query.deleteMany("users", filter);
}
The payload contains the following properties:
collection
: The collection name.isDeleted
: A boolean value that indicates if the document or documents were deleted or not.filter
: The filter that was used to delete the document or documents based on it.isMany
: A boolean value that indicates if the operation is for many documents or not.count
: The number of deleted documents.result
: The Delete Result object.
That event is triggered when calling deleteOne
or deleteMany
methods.
On Fetching Event
This event is triggered before fetching a document or documents.
Method Signature:
public onFetching(callback: (payload: FetchingEventPayload) => void): this;
import { query } from "@mongez/monpulse";
function main() {
query.onFetching(({ collection, query, filter, isMany }) => {
// do something
});
// will trigger the `onFetching` event when fetching a document
const filter = { name: "John Doe" };
query.first("users", filter);
// will trigger the `onFetching` event when fetching many documents
query.list("users", filter);
}
The payload contains the following properties:
collection
: The collection name.query
: The Collection Queryfilter
: The filter that will be used to fetch the document or documents based on it.isMany
: A boolean value that indicates if the operation is for many documents or not.
That event is triggered when calling first
, last
, latest
, oldest
, distinct
or list
methods.
On Fetched Event
This event is triggered after fetching a document or documents.
Method Signature:
public onFetched(callback: (payload: FetchedEventPayload) => void): this;
import { query } from "@mongez/monpulse";
function main() {
query.onFetched(({ collection, output, filter, isMany, count }) => {
// do something
});
// will trigger the `onFetched` event after fetching a document
const filter = { name: "John Doe" };
query.first("users", filter);
// will trigger the `onFetched` event after fetching many documents
query.list("users", filter);
}
The payload contains the following properties:
collection
: The collection name.output
: The fetched document or documents.filter
: The filter that was used to fetch the document or documents based on it.isMany
: A boolean value that indicates if the operation is for many documents or not.count
: The number of fetched documents.