Все официальные встроенные адаптеры (ORM) для работы с базами данных, поддерживают один подход к получению, обновлению и удалению данных. Ниже представленные методы можно использовать на back-end и на front-end (рассмотрим в одной из следующих статей).
Содержание
- равенство
- $limit ограничение
- $skip пропускать
- $sort сортировка
- $select выборка
- $in, $nin
- $lt, $lte меньше, меньше или ровно
- $gt, $gte больше, больше или ровно
- $ne !
- $or или
- Заключение статьи
Равенство
Все поля которые не содержат специальные параметры для запроса, буду сравниваться на равенство.
1 2 3 4 5 6 7 |
// Найти все непрочитанные сообщения в комнате #5 app.service('messages').find({ query: { read: false, roomId: 5 } }); |
1 |
GET /messages?read=false&roomId=5 |
$limit
$limit вернёт только то количество рядов, которое укажете:
1 2 3 4 5 6 7 |
// Вернёт 4 непрочитанных сообщений app.service('messages').find({ query: { $limit: 4, read: false } }); |
1 |
GET /messages?$limit=4&read=false |
$skip
$skip пропустит указанное количество результатов:
1 2 3 4 5 6 7 8 |
// Пропускает 5 и возвращает следующие 2 непрочитанные сообщения app.service('messages').find({ query: { $limit: 2, $skip: 5, read: false } }); |
1 |
GET /messages?$limit=2&$skip=5&read=false |
$sort
$sort будет сортировать по полю к которому добавьте его. Он может содержать список свойств для сортировки, сопоставленных с порядком: 1 по возрастанию, -1 по убыванию.
1 2 3 4 5 6 7 8 9 |
// Найти последние 15 сообщения app.service('messages').find({ query: { $limit: 15, $sort: { createdAt: -1 } } }); |
1 |
/messages?$limit=15&$sort[createdAt]=-1 |
$select
Данный оператор позволяет выбирать только нужные свойства которые будут возвращаться в результате.
1 2 3 4 5 6 7 8 9 10 11 12 |
// Возвращать только поля `text` и `userId` с сообщения app.service('messages').find({ query: { $select: [ 'text', 'userId' ] } }); app.service('messages').get(1, { query: { $select: [ 'text' ] } }); |
1 2 |
GET /messages?$select[]=text&$select[]=userId GET /messages/1?$select[]=text |
$in, $nin
Находит все записи где свойство в диапазоне ($in) или не в диапазоне ($nin) заданных значений.
1 2 3 4 5 6 7 8 |
// Находит все сообщения в комнате 2 или 5 app.service('messages').find({ query: { roomId: { $in: [ 2, 5 ] } } }); |
1 |
GET /messages?roomId[$in]=2&roomId[$in]=5 |
$lt, $lte
Находит все записи где значение меньше (< $lt), меньше или ровно (<= $lte) чем задано значение.
1 2 3 4 5 6 7 8 9 10 |
// Найти все сообщения которые были написаны вчера или раньше const DAY_MS = 24 * 60 * 60 * 1000; app.service('messages').find({ query: { createdAt: { $lt: new Date().getTime() - DAY_MS } } }); |
1 |
GET /messages?createdAt[$lt]=1479777146777 |
$gt, $gte
Находит все записи где значение больше (> $lt), больше или ровно ( >= $lte) чем задано значение.
1 2 3 4 5 6 7 8 9 10 |
// Получить сегодняшние сообщения const DAY_MS = 24 * 60 * 60 * 1000; app.service('messages').find({ query: { createdAt: { $gt: new Date().getTime() - DAY_MS } } }); |
1 |
GET /messages?createdAt[$gt]=1479778846677 |
$ne
Находит все ряды где значение свойства не совпадает с заданным значением.
1 2 3 4 5 6 7 8 |
// Найти все сообщения которые ещё НЕ прочитанные app.service('messages').find({ query: { read: { $ne: true } } }); |
1 |
GET /messages?read[$ne]=true |
$or (или)
Найти все записи, соответствующие любому из указанных критериев.
1 2 3 4 5 6 7 8 9 10 |
// Найти все сообщения которые не заархивированы // или любые сообщения из комнаты 5 app.service('messages').find({ query: { $or: [ { archived: { $ne: true } }, { roomId: 5 } ] } }); |
1 |
GET /messages?$or[0][archived][$ne]=true&$or[1][roomId]=5 |
Заключение
Если Вы хотели бы научиться лучше писать приложения на NodeJS можете пройти данный курс или оформить подписку на все Premium уроки.
Оригинал данной стати здесь.
Присоединяйтесь к сообществу FeathersJS в Телеграмме: t.me/featherjs