@loopback/docs
Version:
Documentation files rendered at [https://loopback.io](https://loopback.io)
137 lines (120 loc) • 23.3 kB
Markdown
---
lang: en
title: 'API docs: repository.repositorymixin'
keywords: LoopBack 4.0, LoopBack 4, Node.js, TypeScript, OpenAPI
sidebar: lb4_sidebar
editurl: https://github.com/loopbackio/loopback-next/tree/master/packages/repository
permalink: /doc/en/lb4/apidocs.repository.repositorymixin.html
---
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) > [@loopback/repository](./repository.md) > [RepositoryMixin](./repository.repositorymixin.md)
## RepositoryMixin() function
A mixin class for Application that creates a .repository() function to register a repository automatically. Also overrides component function to allow it to register repositories automatically.
<b>Signature:</b>
```typescript
export declare function RepositoryMixin<T extends MixinTarget<Application>>(superClass: T): {
new (...args: any[]): {
repository<R extends Repository<any>>(repoClass: Class<R>, nameOrOptions?: string | BindingFromClassOptions | undefined): Binding<R>;
getRepository<R_1 extends Repository<any>>(repo: Class<R_1>): Promise<R_1>;
dataSource<D extends juggler.DataSource>(dataSource: D | Class<D>, nameOrOptions?: string | BindingFromClassOptions | undefined): Binding<D>;
model<M extends Class<unknown>>(modelClass: M): Binding<M>;
component<C extends Component = Component>(componentCtor: Constructor<C>, nameOrOptions?: string | BindingFromClassOptions | undefined): Binding<C>;
mountComponentRepositories(componentInstanceOrClass: Class<unknown> | RepositoryComponent): void;
mountComponentModels(component: RepositoryComponent): void;
migrateSchema(options?: SchemaMigrationOptions): Promise<void>;
readonly options: loopbackContext.ApplicationConfig;
readonly state: string;
controller: <T_1>(controllerCtor: loopbackContext.ControllerClass<T_1>, nameOrOptions?: string | BindingFromClassOptions | undefined) => Binding<T_1>;
server: <T_2 extends loopbackContext.Server>(ctor: Constructor<T_2>, nameOrOptions?: string | BindingFromClassOptions | undefined) => Binding<T_2>;
servers: <T_3 extends loopbackContext.Server>(ctors: Constructor<T_3>[]) => Binding<any>[];
getServer: <T_4 extends loopbackContext.Server>(target: string | Constructor<T_4>) => Promise<T_4>;
init: () => Promise<void>;
onInit: (fn: () => loopbackContext.ValueOrPromise<void>) => Binding<loopbackContext.LifeCycleObserver>;
start: () => Promise<void>;
onStart: (fn: () => loopbackContext.ValueOrPromise<void>) => Binding<loopbackContext.LifeCycleObserver>;
stop: () => Promise<void>;
onStop: (fn: () => loopbackContext.ValueOrPromise<void>) => Binding<loopbackContext.LifeCycleObserver>;
setMetadata: (metadata: loopbackContext.ApplicationMetadata) => void;
lifeCycleObserver: <T_5 extends loopbackContext.LifeCycleObserver>(ctor: Constructor<T_5>, nameOrOptions?: string | BindingFromClassOptions | undefined) => Binding<T_5>;
service: <S>(cls: loopbackContext.ServiceOrProviderClass<S>, nameOrOptions?: string | loopbackContext.ServiceOptions | undefined) => Binding<S>;
interceptor: (interceptor: loopbackContext.Interceptor | Constructor<loopbackContext.Provider<loopbackContext.Interceptor>>, nameOrOptions?: string | loopbackContext.InterceptorBindingOptions | undefined) => Binding<loopbackContext.Interceptor>;
readonly name: string;
readonly subscriptionManager: loopbackContext.ContextSubscriptionManager;
scope: BindingScope;
readonly parent: loopbackContext.Context | undefined;
emitEvent: <T_6 extends loopbackContext.ContextEvent>(type: string, event: T_6) => void;
emitError: (err: unknown) => void;
bind: <ValueType = any>(key: loopbackContext.BindingAddress<ValueType>) => Binding<ValueType>;
add: (binding: Binding<unknown>) => Application;
configure: <ConfigValueType = any>(key?: loopbackContext.BindingAddress<unknown> | undefined) => Binding<ConfigValueType>;
getConfigAsValueOrPromise: <ConfigValueType_1>(key: loopbackContext.BindingAddress<unknown>, propertyPath?: string | undefined, resolutionOptions?: loopbackContext.ResolutionOptions | undefined) => loopbackContext.ValueOrPromise<ConfigValueType_1 | undefined>;
getConfig: <ConfigValueType_2>(key: loopbackContext.BindingAddress<unknown>, propertyPath?: string | undefined, resolutionOptions?: loopbackContext.ResolutionOptions | undefined) => Promise<ConfigValueType_2 | undefined>;
getConfigSync: <ConfigValueType_3>(key: loopbackContext.BindingAddress<unknown>, propertyPath?: string | undefined, resolutionOptions?: loopbackContext.ResolutionOptions | undefined) => ConfigValueType_3 | undefined;
unbind: (key: loopbackContext.BindingAddress<unknown>) => boolean;
subscribe: (observer: loopbackContext.ContextEventObserver) => loopbackContext.Subscription;
unsubscribe: (observer: loopbackContext.ContextEventObserver) => boolean;
close: () => void;
isSubscribed: (observer: loopbackContext.ContextObserver) => boolean;
createView: <T_7 = unknown>(filter: loopbackContext.BindingFilter, comparator?: loopbackContext.BindingComparator | undefined, options?: Omit<loopbackContext.ResolutionOptions, "session"> | undefined) => loopbackContext.ContextView<T_7>;
contains: (key: loopbackContext.BindingAddress<unknown>) => boolean;
isBound: (key: loopbackContext.BindingAddress<unknown>) => boolean;
getOwnerContext: (keyOrBinding: loopbackContext.BindingAddress<unknown> | Readonly<Binding<unknown>>) => loopbackContext.Context | undefined;
getScopedContext: (scope: BindingScope.APPLICATION | BindingScope.SERVER | BindingScope.REQUEST) => loopbackContext.Context | undefined;
getResolutionContext: (binding: Readonly<Binding<unknown>>) => loopbackContext.Context | undefined;
isVisibleTo: (ctx: loopbackContext.Context) => boolean;
find: <ValueType_1 = any>(pattern?: string | RegExp | loopbackContext.BindingFilter | undefined) => Readonly<Binding<ValueType_1>>[];
findByTag: <ValueType_2 = any>(tagFilter: RegExp | loopbackContext.BindingTag) => Readonly<Binding<ValueType_2>>[];
get: {
<ValueType_3>(keyWithPath: loopbackContext.BindingAddress<ValueType_3>, session?: loopbackContext.ResolutionSession | undefined): Promise<ValueType_3>;
<ValueType_4>(keyWithPath: loopbackContext.BindingAddress<ValueType_4>, options: loopbackContext.ResolutionOptions): Promise<ValueType_4 | undefined>;
};
getSync: {
<ValueType_5>(keyWithPath: loopbackContext.BindingAddress<ValueType_5>, session?: loopbackContext.ResolutionSession | undefined): ValueType_5;
<ValueType_6>(keyWithPath: loopbackContext.BindingAddress<ValueType_6>, options?: loopbackContext.ResolutionOptions | undefined): ValueType_6 | undefined;
};
getBinding: {
<ValueType_7 = any>(key: loopbackContext.BindingAddress<ValueType_7>): Binding<ValueType_7>;
<ValueType_8>(key: loopbackContext.BindingAddress<ValueType_8>, options?: {
optional?: boolean | undefined;
} | undefined): Binding<ValueType_8> | undefined;
};
findOrCreateBinding: <T_8>(key: loopbackContext.BindingAddress<T_8>, policy?: loopbackContext.BindingCreationPolicy | undefined) => Binding<T_8>;
getValueOrPromise: <ValueType_9>(keyWithPath: loopbackContext.BindingAddress<ValueType_9>, optionsOrSession?: loopbackContext.ResolutionOptionsOrSession | undefined) => loopbackContext.ValueOrPromise<ValueType_9 | undefined>;
toJSON: () => loopbackContext.JSONObject;
inspect: (options?: loopbackContext.ContextInspectOptions | undefined) => loopbackContext.JSONObject;
on: {
(eventName: "bind" | "unbind", listener: loopbackContext.ContextEventListener): Application;
(event: string | symbol, listener: (...args: any[]) => void): Application;
};
once: {
(eventName: "bind" | "unbind", listener: loopbackContext.ContextEventListener): Application;
(event: string | symbol, listener: (...args: any[]) => void): Application;
};
addListener: (event: string | symbol, listener: (...args: any[]) => void) => Application;
removeListener: (event: string | symbol, listener: (...args: any[]) => void) => Application;
off: (event: string | symbol, listener: (...args: any[]) => void) => Application;
removeAllListeners: (event?: string | symbol | undefined) => Application;
setMaxListeners: (n: number) => Application;
getMaxListeners: () => number;
listeners: (event: string | symbol) => Function[];
rawListeners: (event: string | symbol) => Function[];
emit: (event: string | symbol, ...args: any[]) => boolean;
listenerCount: (type: string | symbol) => number;
prependListener: (event: string | symbol, listener: (...args: any[]) => void) => Application;
prependOnceListener: (event: string | symbol, listener: (...args: any[]) => void) => Application;
eventNames: () => (string | symbol)[];
};
} & T;
```
## Parameters
| Parameter | Type | Description |
| --- | --- | --- |
| superClass | T | Application class |
<b>Returns:</b>
{ new (...args: any\[\]): { repository<R extends [Repository](./repository.repository.md)<!-- --><any>>(repoClass: [Class](./repository.class.md)<!-- --><R>, nameOrOptions?: string \| [BindingFromClassOptions](./context.bindingfromclassoptions.md) \| undefined): [Binding](./context.binding.md)<!-- --><R>; getRepository<R\_1 extends [Repository](./repository.repository.md)<!-- --><any>>(repo: [Class](./repository.class.md)<!-- --><R\_1>): Promise<R\_1>; dataSource<D extends juggler.DataSource>(dataSource: D \| [Class](./repository.class.md)<!-- --><D>, nameOrOptions?: string \| [BindingFromClassOptions](./context.bindingfromclassoptions.md) \| undefined): [Binding](./context.binding.md)<!-- --><D>; model<M extends [Class](./repository.class.md)<!-- --><unknown>>(modelClass: M): [Binding](./context.binding.md)<!-- --><M>; component<C extends [Component](./core.component.md) = [Component](./core.component.md)<!-- -->>(componentCtor: [Constructor](./context.constructor.md)<!-- --><C>, nameOrOptions?: string \| [BindingFromClassOptions](./context.bindingfromclassoptions.md) \| undefined): [Binding](./context.binding.md)<!-- --><C>; mountComponentRepositories(componentInstanceOrClass: [Class](./repository.class.md)<!-- --><unknown> \| [RepositoryComponent](./repository.repositorycomponent.md)<!-- -->): void; mountComponentModels(component: [RepositoryComponent](./repository.repositorycomponent.md)<!-- -->): void; migrateSchema(options?: [SchemaMigrationOptions](./repository.schemamigrationoptions.md)<!-- -->): Promise<void>; readonly options: loopbackContext.[ApplicationConfig](./core.applicationconfig.md)<!-- -->; readonly state: string; controller: <T\_1>(controllerCtor: loopbackContext.[ControllerClass](./core.controllerclass.md)<!-- --><T\_1>, nameOrOptions?: string \| [BindingFromClassOptions](./context.bindingfromclassoptions.md) \| undefined) => [Binding](./context.binding.md)<!-- --><T\_1>; server: <T\_2 extends loopbackContext.[Server](./core.server.md)<!-- -->>(ctor: [Constructor](./context.constructor.md)<!-- --><T\_2>, nameOrOptions?: string \| [BindingFromClassOptions](./context.bindingfromclassoptions.md) \| undefined) => [Binding](./context.binding.md)<!-- --><T\_2>; servers: <T\_3 extends loopbackContext.[Server](./core.server.md)<!-- -->>(ctors: [Constructor](./context.constructor.md)<!-- --><T\_3>\[\]) => [Binding](./context.binding.md)<!-- --><any>\[\]; getServer: <T\_4 extends loopbackContext.[Server](./core.server.md)<!-- -->>(target: string \| [Constructor](./context.constructor.md)<!-- --><T\_4>) => Promise<T\_4>; init: () => Promise<void>; onInit: (fn: () => loopbackContext.[ValueOrPromise](./context.valueorpromise.md)<!-- --><void>) => [Binding](./context.binding.md)<!-- --><loopbackContext.[LifeCycleObserver](./core.lifecycleobserver.md)<!-- -->>; start: () => Promise<void>; onStart: (fn: () => loopbackContext.[ValueOrPromise](./context.valueorpromise.md)<!-- --><void>) => [Binding](./context.binding.md)<!-- --><loopbackContext.[LifeCycleObserver](./core.lifecycleobserver.md)<!-- -->>; stop: () => Promise<void>; onStop: (fn: () => loopbackContext.[ValueOrPromise](./context.valueorpromise.md)<!-- --><void>) => [Binding](./context.binding.md)<!-- --><loopbackContext.[LifeCycleObserver](./core.lifecycleobserver.md)<!-- -->>; setMetadata: (metadata: loopbackContext.[ApplicationMetadata](./core.applicationmetadata.md)<!-- -->) => void; lifeCycleObserver: <T\_5 extends loopbackContext.[LifeCycleObserver](./core.lifecycleobserver.md)<!-- -->>(ctor: [Constructor](./context.constructor.md)<!-- --><T\_5>, nameOrOptions?: string \| [BindingFromClassOptions](./context.bindingfromclassoptions.md) \| undefined) => [Binding](./context.binding.md)<!-- --><T\_5>; service: <S>(cls: loopbackContext.[ServiceOrProviderClass](./core.serviceorproviderclass.md)<!-- --><S>, nameOrOptions?: string \| loopbackContext.[ServiceOptions](./core.serviceoptions.md) \| undefined) => [Binding](./context.binding.md)<!-- --><S>; interceptor: (interceptor: loopbackContext.[Interceptor](./context.interceptor.md) \| [Constructor](./context.constructor.md)<!-- --><loopbackContext.[Provider](./context.provider.md)<!-- --><loopbackContext.[Interceptor](./context.interceptor.md)<!-- -->>>, nameOrOptions?: string \| loopbackContext.[InterceptorBindingOptions](./context.interceptorbindingoptions.md) \| undefined) => [Binding](./context.binding.md)<!-- --><loopbackContext.[Interceptor](./context.interceptor.md)<!-- -->>; readonly name: string; readonly subscriptionManager: loopbackContext.[ContextSubscriptionManager](./context.contextsubscriptionmanager.md)<!-- -->; scope: [BindingScope](./context.bindingscope.md)<!-- -->; readonly parent: loopbackContext.[Context](./context.context.md) \| undefined; emitEvent: <T\_6 extends loopbackContext.[ContextEvent](./context.contextevent.md)<!-- -->>(type: string, event: T\_6) => void; emitError: (err: unknown) => void; bind: <ValueType = any>(key: loopbackContext.[BindingAddress](./context.bindingaddress.md)<!-- --><ValueType>) => [Binding](./context.binding.md)<!-- --><ValueType>; add: (binding: [Binding](./context.binding.md)<!-- --><unknown>) => [Application](./core.application.md)<!-- -->; configure: <ConfigValueType = any>(key?: loopbackContext.[BindingAddress](./context.bindingaddress.md)<!-- --><unknown> \| undefined) => [Binding](./context.binding.md)<!-- --><ConfigValueType>; getConfigAsValueOrPromise: <ConfigValueType\_1>(key: loopbackContext.[BindingAddress](./context.bindingaddress.md)<!-- --><unknown>, propertyPath?: string \| undefined, resolutionOptions?: loopbackContext.[ResolutionOptions](./context.resolutionoptions.md) \| undefined) => loopbackContext.[ValueOrPromise](./context.valueorpromise.md)<!-- --><ConfigValueType\_1 \| undefined>; getConfig: <ConfigValueType\_2>(key: loopbackContext.[BindingAddress](./context.bindingaddress.md)<!-- --><unknown>, propertyPath?: string \| undefined, resolutionOptions?: loopbackContext.[ResolutionOptions](./context.resolutionoptions.md) \| undefined) => Promise<ConfigValueType\_2 \| undefined>; getConfigSync: <ConfigValueType\_3>(key: loopbackContext.[BindingAddress](./context.bindingaddress.md)<!-- --><unknown>, propertyPath?: string \| undefined, resolutionOptions?: loopbackContext.[ResolutionOptions](./context.resolutionoptions.md) \| undefined) => ConfigValueType\_3 \| undefined; unbind: (key: loopbackContext.[BindingAddress](./context.bindingaddress.md)<!-- --><unknown>) => boolean; subscribe: (observer: loopbackContext.[ContextEventObserver](./context.contexteventobserver.md)<!-- -->) => loopbackContext.[Subscription](./context.subscription.md)<!-- -->; unsubscribe: (observer: loopbackContext.[ContextEventObserver](./context.contexteventobserver.md)<!-- -->) => boolean; close: () => void; isSubscribed: (observer: loopbackContext.[ContextObserver](./context.contextobserver.md)<!-- -->) => boolean; createView: <T\_7 = unknown>(filter: loopbackContext.[BindingFilter](./context.bindingfilter.md)<!-- -->, comparator?: loopbackContext.[BindingComparator](./context.bindingcomparator.md) \| undefined, options?: Omit<loopbackContext.[ResolutionOptions](./context.resolutionoptions.md)<!-- -->, "session"> \| undefined) => loopbackContext.[ContextView](./context.contextview.md)<!-- --><T\_7>; contains: (key: loopbackContext.[BindingAddress](./context.bindingaddress.md)<!-- --><unknown>) => boolean; isBound: (key: loopbackContext.[BindingAddress](./context.bindingaddress.md)<!-- --><unknown>) => boolean; getOwnerContext: (keyOrBinding: loopbackContext.[BindingAddress](./context.bindingaddress.md)<!-- --><unknown> \| Readonly<[Binding](./context.binding.md)<!-- --><unknown>>) => loopbackContext.[Context](./context.context.md) \| undefined; getScopedContext: (scope: [BindingScope.APPLICATION](./context.bindingscope.md) \| [BindingScope.SERVER](./context.bindingscope.md) \| [BindingScope.REQUEST](./context.bindingscope.md)<!-- -->) => loopbackContext.[Context](./context.context.md) \| undefined; getResolutionContext: (binding: Readonly<[Binding](./context.binding.md)<!-- --><unknown>>) => loopbackContext.[Context](./context.context.md) \| undefined; isVisibleTo: (ctx: loopbackContext.[Context](./context.context.md)<!-- -->) => boolean; find: <ValueType\_1 = any>(pattern?: string \| RegExp \| loopbackContext.[BindingFilter](./context.bindingfilter.md) \| undefined) => Readonly<[Binding](./context.binding.md)<!-- --><ValueType\_1>>\[\]; findByTag: <ValueType\_2 = any>(tagFilter: RegExp \| loopbackContext.[BindingTag](./context.bindingtag.md)<!-- -->) => Readonly<[Binding](./context.binding.md)<!-- --><ValueType\_2>>\[\]; get: { <ValueType\_3>(keyWithPath: loopbackContext.[BindingAddress](./context.bindingaddress.md)<!-- --><ValueType\_3>, session?: loopbackContext.[ResolutionSession](./context.resolutionsession.md) \| undefined): Promise<ValueType\_3>; <ValueType\_4>(keyWithPath: loopbackContext.[BindingAddress](./context.bindingaddress.md)<!-- --><ValueType\_4>, options: loopbackContext.[ResolutionOptions](./context.resolutionoptions.md)<!-- -->): Promise<ValueType\_4 \| undefined>; }; getSync: { <ValueType\_5>(keyWithPath: loopbackContext.[BindingAddress](./context.bindingaddress.md)<!-- --><ValueType\_5>, session?: loopbackContext.[ResolutionSession](./context.resolutionsession.md) \| undefined): ValueType\_5; <ValueType\_6>(keyWithPath: loopbackContext.[BindingAddress](./context.bindingaddress.md)<!-- --><ValueType\_6>, options?: loopbackContext.[ResolutionOptions](./context.resolutionoptions.md) \| undefined): ValueType\_6 \| undefined; }; getBinding: { <ValueType\_7 = any>(key: loopbackContext.[BindingAddress](./context.bindingaddress.md)<!-- --><ValueType\_7>): [Binding](./context.binding.md)<!-- --><ValueType\_7>; <ValueType\_8>(key: loopbackContext.[BindingAddress](./context.bindingaddress.md)<!-- --><ValueType\_8>, options?: { optional?: boolean \| undefined; } \| undefined): [Binding](./context.binding.md)<!-- --><ValueType\_8> \| undefined; }; findOrCreateBinding: <T\_8>(key: loopbackContext.[BindingAddress](./context.bindingaddress.md)<!-- --><T\_8>, policy?: loopbackContext.[BindingCreationPolicy](./context.bindingcreationpolicy.md) \| undefined) => [Binding](./context.binding.md)<!-- --><T\_8>; getValueOrPromise: <ValueType\_9>(keyWithPath: loopbackContext.[BindingAddress](./context.bindingaddress.md)<!-- --><ValueType\_9>, optionsOrSession?: loopbackContext.[ResolutionOptionsOrSession](./context.resolutionoptionsorsession.md) \| undefined) => loopbackContext.[ValueOrPromise](./context.valueorpromise.md)<!-- --><ValueType\_9 \| undefined>; toJSON: () => loopbackContext.[JSONObject](./context.jsonobject.md)<!-- -->; inspect: (options?: loopbackContext.[ContextInspectOptions](./context.contextinspectoptions.md) \| undefined) => loopbackContext.[JSONObject](./context.jsonobject.md)<!-- -->; on: { (eventName: "bind" \| "unbind", listener: loopbackContext.[ContextEventListener](./context.contexteventlistener.md)<!-- -->): [Application](./core.application.md)<!-- -->; (event: string \| symbol, listener: (...args: any\[\]) => void): [Application](./core.application.md)<!-- -->; }; once: { (eventName: "bind" \| "unbind", listener: loopbackContext.[ContextEventListener](./context.contexteventlistener.md)<!-- -->): [Application](./core.application.md)<!-- -->; (event: string \| symbol, listener: (...args: any\[\]) => void): [Application](./core.application.md)<!-- -->; }; addListener: (event: string \| symbol, listener: (...args: any\[\]) => void) => [Application](./core.application.md)<!-- -->; removeListener: (event: string \| symbol, listener: (...args: any\[\]) => void) => [Application](./core.application.md)<!-- -->; off: (event: string \| symbol, listener: (...args: any\[\]) => void) => [Application](./core.application.md)<!-- -->; removeAllListeners: (event?: string \| symbol \| undefined) => [Application](./core.application.md)<!-- -->; setMaxListeners: (n: number) => [Application](./core.application.md)<!-- -->; getMaxListeners: () => number; listeners: (event: string \| symbol) => Function\[\]; rawListeners: (event: string \| symbol) => Function\[\]; emit: (event: string \| symbol, ...args: any\[\]) => boolean; listenerCount: (type: string \| symbol) => number; prependListener: (event: string \| symbol, listener: (...args: any\[\]) => void) => [Application](./core.application.md)<!-- -->; prependOnceListener: (event: string \| symbol, listener: (...args: any\[\]) => void) => [Application](./core.application.md)<!-- -->; eventNames: () => (string \| symbol)\[\]; }; } & T
A new class that extends the super class with repository related methods
## Example
```ts
class MyApplication extends RepositoryMixin(Application) {}
```
Please note: the members in the mixin function are documented in a dummy class called <a href="#RepositoryMixinDoc">RepositoryMixinDoc</a>