Репозиторий
Обзор
Для заданного объекта Collection вы можете получить его объект Repository для выполнения операций чтения и записи данных в коллекции.
Запросы
Базовые запросы
В объекте Repository вы можете вызывать методы, начинающиеся с find*, для выполнения операций запроса. Все методы запроса поддерживают передачу параметра filter для фильтрации данных.
Операторы
Параметр filter в Repository также предоставляет различные операторы для выполнения более разнообразных операций запроса.
Более подробную информацию об операторах см. в разделе Операторы фильтрации.
Управление полями
При выполнении операции запроса вы можете управлять выходными полями с помощью параметров fields, except и appends.
fields: Указывает выходные поляexcept: Исключает выходные поляappends: Добавляет связанные поля в вывод
Запросы по связанным полям
Параметр filter поддерживает фильтрацию по связанным полям, например:
Связанные поля также могут быть вложенными.
Сортировка
Вы можете сортировать результаты запроса с помощью параметра sort.
Вы также можете сортировать по полям связанных объектов.
Создание
Базовое создание
Создавайте новые объекты данных с помощью Repository.
Создание связей
При создании вы можете одновременно создавать связанные объекты. Аналогично запросам, поддерживается также вложенное использование связанных объектов, например:
Если связанный объект уже существует в базе данных, вы можете передать его ID, чтобы установить связь с ним при создании.
Обновление
Базовое обновление
Получив объект данных, вы можете напрямую изменять его свойства в объекте данных (Model), а затем вызвать метод save для сохранения изменений.
Объект данных Model наследуется от Sequelize Model. Операции с 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>
Тип
Подробности
filter: Указывает условия фильтрации для удаляемых записей. Подробное использование Filter см. в методеfind().filterByTk: Указывает условия фильтрации для удаляемых записей по TargetKey.truncate: Следует ли очищать данные коллекции, действует, если параметрыfilterилиfilterByTkне переданы.transaction: Объект транзакции. Если параметр транзакции не передан, метод автоматически создаст внутреннюю транзакцию.

