Skip to content

ControllerConfig

Full reference for options accepted by importModel and importModels.

ts
interface ControllerConfig {
  fastUpdate?: 'enabled' | 'disabled' | 'optional';
  disabledPluralize?: boolean;
  basePath?: string;
  disabledMethod?: string[];
  logger?: HirokiLogger;
  logLevel?: LogLevel;
  hooks?: ControllerHooks;
  middleware?: HirokiMiddleware[];
  adapter?: HirokiAdapter;
  allowedFields?: string[];
  disabledFields?: string[];
  queryLimits?: QueryLimits;
}

fastUpdate

Controls whether updates skip the find-then-save round-trip.

ValueBehavior
'disabled' (default)Always fetch document first — runs Mongoose pre-save hooks
'enabled'Always use updateOne — faster, no pre-save hooks
'optional'Use updateOne only when ?fast=true is in the query string

disabledPluralize

When true, disables pluralization so the route uses the model name as-is (e.g. User/user). Default: false — routes are pluralized automatically (e.g. User/users).

ts
hiroki.importModel(User);                          // → /users  (default)
hiroki.importModel(User, { disabledPluralize: true });  // → /user

basePath

URL prefix prepended to the resource route. Default: inherits from global config ('/api').

disabledMethod

Array of HTTP methods to block. Accepts uppercase ('DELETE') or lowercase ('delete').

Blocked methods return 405 Method Not Allowed.

logger / logLevel

Custom logger instance or minimum log level for the default ConsoleLogger.

logger overrides logLevel when both are set.

hooks

Lifecycle hooks. See Hooks & Middleware.

middleware

Per-resource middleware chain. See Hooks & Middleware.

adapter

Inject a custom HirokiAdapter directly. Skips Mongoose validation and the adapter registry. See Adapters.

allowedFields

Whitelist of body field names allowed in create and update operations. Fields not in the list are stripped before hooks run. See Security.

disabledFields

Blacklist of field names excluded from all GET responses — list, findById, and populate sub-documents. Takes precedence over ?select= query params that attempt to request a disabled field. See Security.

ts
hiroki.importModel(User, {
  disabledFields: ['password', 'ssn'],
});

queryLimits

Override default query safety limits.

ts
interface QueryLimits {
  maxFilters?: number;      // default: 20
  maxInValues?: number;     // default: 100
  maxRegexLength?: number;  // default: 200
}

See Security.

Released under the MIT License.