Skip to content

Services - Options

You can pass various options when performing operations or commands.

CrudOptions

CrudOptions is a shared set of parameters that can be set from the client.

export interface ICrudOptions {
    populate?: string[];
    mockRole?: string;
    fields?: string[];
    limit?: number;
    offset?: number;
    cached?: boolean;
    allowIdOverride?: boolean;
    skipServiceHooks?: boolean;
    returnUpdatedEntity?: boolean;
}

You can pass it when calling service methods.

import { OpParams } from "@eicrud/core/crud";

const query: Partial<Profile> = {
    astroSign: "Aries"
}

const opParams: OpParams = {
    options: {
        limit: 20
    }
}

const {data, total, limit} = await profileService.$find(query, null, opParams);

Note

Check out the client options page to use CrudOptions in your front-end.

populate

Corresponds to MikroOrm's populate option.

mockRole

Requests that include this option will perform as if the logged user has the role mockRole. To activate, CrudRole->canMock must be set.

Note

mockRole is useful for testing authorizations without switching accounts. You can set ClientConfig->globalMockRole to mock roles from the client.

fields

Corresponds to MikroOrm's fields option.

limit

Corresponds to MikroOrm's limit option.

offset

Corresponds to MikroOrm's offset option.

cached

Indicates if findOne results should be fetched from the cache.

Note

cached only works in client calls.

allowIdOverride

Allows Entity primary keys to be pre-generated in $create operations.

Warning

Letting users set their Entities' ID opens security risks. For example, impersonation of deleted entities.

skipServiceHooks

Allows skipping of all service hooks.

Note

skipServiceHooks doesn't affect controller hooks.

returnUpdatedEntity

Returns the updated/deleted entity in patchOne and deleteOne operations.

Note

returnUpdatedEntity impacts the operation' performance.

OpParams

OpParams are parameters only accessible from the server.

interface OpParams {
  options?: CrudOptions;
  secure?: boolean;
  em?: EntityManager;
  noFlush?: boolean;
}
Each parameter will be set to a default value if not provided.
  _defaultOpParams: OpParams = {
    options: {},
    secure: true,
    em: null,
    noFlush: false,
  };

options

The CrudOptions for the operation.

secure

Adds extra checks depending on the operation (i.e: verify maxItemsInDb for create, check if the entity exists for patch). Usually you want to set this parameter if the method call results from a user interaction.

em

Provide a specific entity manager to perform the operation.

noFlush

Disable the entity manager flush (for create operations only).