Repository - Репозиторий
Обзор
Для данного объекта Collection вы можете получить его объект Repository для выполнения операций чтения и записи в коллекции.
Запрос
Базовый запрос
В объекте Repository вызовите связанные методы find* для выполнения операций запроса. Все методы запроса поддерживают передачу параметра filter для фильтрации данных.
Операторы
Параметр filter в Repository также предоставляет множество операторов для выполнения более разнообразных операций запроса.
Более подробную информацию об операторах см. в разделе Операторы фильтров.
Управление полем
При выполнении операции запроса вы можете управлять полями вывода с помощью параметров fields, except и appends.
fields: укажите поля вывода.except: исключить поля вывода.appends: добавить связанные поля к выводу.
Запрос полей связи
Параметр filter поддерживает фильтрацию по полям связи, например:
Поля связи также могут быть вложенными.
Сортировка
Вы можете отсортировать результаты запроса, используя параметр sort.
Вы также можете сортировать по полям связанных объектов.
Создание
Базовое создание
Создайте новые объекты данных через Repository.
Создание связей
При создании вы также можете одновременно создавать связанные объекты. Подобно запросам, также поддерживается вложенное использование связанных объектов, например:
Если связанный объект уже существует в базе данных, вы можете передать его идентификатор, чтобы установить с ним связь во время создания.
Обновление
Базовое обновление
После получения объекта данных вы можете напрямую изменить его свойства в объекте данных (Model), а затем вызвать метод save, чтобы сохранить изменения.
Объект данных Model наследуется от модели Sequelize. Для операций с Model см. Sequelize Model.)
Вы также можете обновить данные через Repository:
При обновлении вы можете контролировать, какие поля обновляются, с помощью параметров whitelist и blacklist, например:
Обновление полей связи
При обновлении можно задать связанные объекты, например:
Удаление
Вы можете вызвать метод destroy() в Repository, чтобы выполнить операцию удаления. При удалении необходимо указать критерии фильтра:
Конструктор
Обычно не вызывается напрямую разработчиками. В основном он создается после регистрации типа через db.registerRepositories() и указания соответствующего зарегистрированного типа репозитория в параметрах db.collection().
Сигнатура
constructor(collection: Collection)
Пример
Свойства
database
Экземпляр управления базой данных контекста.
collection
Соответствующий экземпляр управления коллекцией.
model
Соответствующий класс модели.
Методы экземпляра
find()
Запрашивает набор данных из базы данных, позволяя указать условия фильтрации, сортировку и т. д.
Сигнатура
async find(options?: FindOptions): Promise<Model[]>
Тип
Подробности
filter: Filter
Условие запроса, используемое для фильтрации результатов данных. В переданных параметрах запроса key — это имя поля для запроса, а value может быть значением для запроса или использоваться с операторами для другой условной фильтрации данных.
Дополнительные операторы см. в разделе Операторы запросов.
filterByTk: TargetKey
Запрашивает данные с помощью TargetKey, что является удобным методом для параметра filter. Конкретное поле для TargetKey может быть настроено в Collection, по умолчанию о но равно primaryKey.
fields: string[]
Столбцы запроса, используемые для управления результатами полей данных. После передачи этого параметра будут возвращены только указанные поля.
except: string[]
Исключенные столбцы, используемые для управления результатами полей данных. После передачи этого параметра переданные поля не будут выведены.
appends: string[]
Добавленные столбцы, используемые для загрузки связанных данных. После передачи этого параметра также будут выведены указанные поля связи.
sort: string[] | string
Указывает метод сортировки результатов запроса. Параметром является имя поля, которое по умолчанию имеет порядок возрастания asc. Для порядка по убыванию desc добавьте символ - перед именем поля, например, ['-id', 'name'], что означает сортировку по id desc, name asc.
limit: number
Ограничивает количество результатов, аналогично limit в SQL.
offset: number
Смещение запроса, такое же, как offset в SQL.
Пример
findOne()
Запрашивает из базы данных один фрагмент данных, соответствующий определенным критериям. Эквивалент Model.findOne() в Sequelize.
Сигнатура
async findOne(options?: FindOneOptions): Promise<Model | null>
Пример
count()
Запрашивает общее количество записей данных, соответствующих определенным критериям, из базы данных. Эквивалент Model.count() в Sequelize.
Сигнатура
count(options?: CountOptions): Promise<number>
Тип
Пример
findAndCount()
Запрашивает набор данных и общее количество результатов, соответствующих определенным критериям, из базы данных. Эквивалент Model.findAndCountAll() в Sequelize.
Сигнатура
async findAndCount(options?: FindAndCountOptions): Promise<[Model[], number]>
Тип
Подробности
Параметры запроса такие же, как find(). Возвращаемое значение представляет собой массив, где первый элемент — это результат запроса, а второй элемент — общее количество.
create()
Вставляет новую запись в коллекцию. Эквивалент Model.create() в Sequelize. Когда создаваемый объект данных содержит информацию о полях отношений, соответствующие записи данных отношений также будут созданы или обновлены.
Сигнатура
async create<M extends Model>(options: CreateOptions): Promise<M>
Пример
createMany()
Вставляет в коллекцию нескол ько новых записей. Эквивалентно многократному вызову метода create().
Сигнатура
createMany(options: CreateManyOptions): Promise<Model[]>
Тип
Подробности
records: Массив объектов данных для создаваемых записей.transaction: Объект транзакции. Если параметр транзакции не передан, метод автоматически создаст внутреннюю транзакцию.
Пример
update()
Обновляет данные в коллекции. Эквивалент Model.update() в Sequelize. Когда обновляемый объект данных содержит информацию о полях отношений, соответствующие записи данных отношений также будут созданы или обновлены.
Сигнатура
async update<M extends Model>(options: UpdateOptions): Promise<M>
Пример
destroy()
Удаляет данные из коллекции. Эквивалент Model.destroy() в Sequelize.
Сигнатура
async destroy(options?: TargetKey | TargetKey[] | DestroyOptions): Promise<number>
Тип

