При использовании платформы ORM (Object Relational Mapper) мы представляем данные в виде классов моделей:
@model()
class Person {
@property()
name: string;
}
Чтобы сохранить данные и запросить данные, нам нужно добавить поведение в наши модели.Репозитории - это классы, обеспечивающие такое поведение.
Например, интерфейс EntityCrudRepository
LoopBack описывает методы для создания, обновления, удаления и запроса данных в таблицах SQL / коллекциях документов NoSQL.
// simplified version
interface EntityCrudRepository<T, ID> {
create(data: DataObject<T>): Promise<T>;
find(filter?: Filter<T>): Promise<T[]>;
updateById(id: ID, data: DataObject<T>): Promise<void>;
deleteById(id: ID): Promise<void>;
// etc.
}
KeyValueRepository
описывает API для работы с хранилищем значений ключей, например Redis:
interface KeyValueRepository<T> {
get(key: string): Promise<T>;
set(key: string, value: DataObject<T>): Promise<void>;
delete(key: string): Promise<void>;
}
См. Также Шаблоны архитектуры корпоративных приложений :
Концептуально, aРепозиторий инкапсулирует набор объектов, сохраненных в хранилище данных, и операции, выполняемые над ними, обеспечивая более объектно-ориентированное представление уровня персистентности.Хранилище также поддерживает цель достижения чистого разделения и односторонней зависимости между доменом и слоями отображения данных.