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