Services - Operations
Eicrud's services offer the following CRUD methods out of the box. Check out the client page to call them from your front end.
Warning
In the following examples CRUD methods are called directly from CrudServices, this means Security rules are not enforced and Validations/Transforms are not applied. All these checks happen at the controller level.
Warning
For performance reasons, $delete, $patch,$patchIn and $patchBatch operations make use of MikroOrm's native collection methods. This means some of the ORM functionalities such as cascading and lifecycle hooks will not take trigger on these. 
Create Operations
$create
Create a new entity.
const newProfile: Partial<Profile> = {
    userName: "Jon Doe",
    owner: ctx.userId
}
await profileService.$create(newProfile, ctx);
$createBatch
Create new entities.
const newProfiles: Partial<Profile>[] = [
    {
    userName: "Jon Doe",
    owner: '507f1f77bcf86cd799439011'
    },
    {
    userName: "Sarah Doe",
    owner: '507f191e810c19729de860ea'
    },
]
await profileService.$createBatch(newProfiles, ctx);
Read Operations
$findOne
Find an entity.
const query: Partial<Profile> = {
    userName: "Jon Doe",
}
const res: Profile = await profileService.$findOne(query, ctx);
$find
Find entities.
const query: Partial<Profile> = {
    astroSign: "Aries"
}
const {data, total, limit} = await profileService.$find(query, ctx);
$findIn
Find entities with IDs included in the provided list.
const ids = ['4d3ed089fb60ab534684b7e9', '4d3ed089fb60ab534684b7ff']
const {data, total, limit} = await profileService.$findIn(ids, {}, ctx);
Update Operations
$patchOne
Update an existing entity.
const query: Partial<Profile> = {
    id: user.profileId
}
const update: Partial<Profile> = {
    bio: "Hello world"
}
await profileService.$patchOne(query, update, ctx); 
Note
$patchOne will throw if the queried entity doesn't exist.
$patch
Update every entity that matches a query.
const query: Partial<Profile> = {
    astroSign: "Aries"
}
const update: Partial<Profile> = {
    bio: "Is passionate and motivated."
}
await profileService.$patch(query, update, ctx);
Note
$patch returns the number of entities affected by the operation
$patchIn
Update entities with IDs included in the provided list.
const ids = ['4d3ed089fb60ab534684b7e9', '4d3ed089fb60ab534684b7ff']
const update: Partial<Profile> = {
    bio: "Is nice."
}
await profileService.$patch(query, update, ctx);
$patchBatch
Perform multiple $patch operations.
const updates = [
    {
        query: {
            astroSign: "Leo"
        },
        data: {
            bio: "Is generous."
        }
    },
    {
        query: {
            astroSign: "Taurus"
        },
        data: {
            bio: "Is relaxed."
        }
    },
]
await profileService.$patchBatch(updates, ctx);
Note
Updating to undefined has no effect.
Delete Operations
$deleteOne
Delete an entity.
const query: Partial<Profile> = {
    userName: "Jon Doe",
}
await profileService.$deleteOne(query, ctx);
Note
$deleteOne will throw if the queried entity doesn't exist.
$delete
Remove every entity that matches a query.
Note
$delete returns the number of entities affected by the operation
$deleteIn
Remove entities with IDs included in the provided list.
const ids = ['4d3ed089fb60ab534684b7e9', '4d3ed089fb60ab534684b7ff']
await profileService.$deleteIn(query, ctx);