Уведомление о переводе ИИ
Эта документация была автоматически переведена ИИ.
Репоз иторий
Обзор
Для заданного объекта Collection вы можете получить его объект Repository для выполнения операций чтения и записи данных в коллекции.
const { UserCollection } = require('./collections');
const UserRepository = UserCollection.repository;
const user = await UserRepository.findOne({
filter: {
id: 1,
},
});
user.name = 'new name';
await user.save();
Запросы
Базовые запросы
В объекте Repository вы можете вызывать методы, начинающиеся с find*, для выполнения операций запроса. Все методы запроса поддерживают передачу параметра filter для фильтрации данных.
// SELECT * FROM users WHERE id = 1
userRepository.find({
filter: {
id: 1,
},
});
Операторы
Параметр filter в Repository также предоставляет различные операторы для выполнения более разнообразных операций запроса.
// SELECT * FROM users WHERE age > 18
userRepository.find({
filter: {
age: {
$gt: 18,
},
},
});
// SELECT * FROM users WHERE age > 18 OR name LIKE '%张%'
userRepository.find({
filter: {
$or: [{ age: { $gt: 18 } }, { name: { $like: '%张%' } }],
},
});
Более подробную информацию об операторах см. в разделе Операторы фильтрации.
Управление полями
При выполнении операции запроса вы можете управлять выходными полями с помощью параметров fields, except и appends.
fields: Указывает выходные поля
except: Исключает выходные поля
appends: Добавляет связанные поля в вывод
// Результат будет содержать только поля id и name
userRepository.find({
fields: ['id', 'name'],
});
// Результат не будет содержать поле password
userRepository.find({
except: ['password'],
});
// Результат будет содержать данные из связанного объекта posts
userRepository.find({
appends: ['posts'],
});
Запросы по связанным полям
Параметр filter поддерживает фильтрацию по связанным полям, например:
// Запрос объектов user, чьи связанные posts содержат объект с заголовком 'post title'
userRepository.find({
filter: {
'posts.title': 'post title',
},
});
Связанные поля также могут быть вложенными.
// Запрос объектов user, где комментарии их постов содержат ключевые слова
await userRepository.find({
filter: {
'posts.comments.content': {
$like: '%keywords%',
},
},
});
Сортировка
Вы можете сортировать результаты запроса с помощью параметра sort.
// SELECT * FROM users ORDER BY age
await userRepository.find({
sort: 'age',
});
// SELECT * FROM users ORDER BY age DESC
await userRepository.find({
sort: '-age',
});
// SELECT * FROM users ORDER BY age DESC, name ASC
await userRepository.find({
sort: ['-age', 'name'],
});
Вы также можете сортировать по полям связанных объектов.
await userRepository.find({
sort: 'profile.createdAt',
});
Создание
Базовое создание
Создавайте новые объекты данных с помощью Repository.
await userRepository.create({
name: '张三',
age: 18,
});
// INSERT INTO users (name, age) VALUES ('张三', 18)
// Поддерживается массовое создание
await userRepository.create([
{
name: '张三',
age: 18,
},
{
name: '李四',
age: 20,
},
]);