Запросы сервисам FeathersJS

Все официальные встроенные адаптеры (ORM) для работы с базами данных, поддерживают один подход к получению, обновлению и удалению данных. Ниже представленные методы можно использовать на back-end и на front-end (рассмотрим в одной из следующих статей).

Важно: когда мы отправляем данные через REST URL, все параметры запроса будут иметь тип данных: строка. В зависимости от сервиса, значения в params.query будут меняться в правильный тип данных в before hook.

Содержание

Равенство

Все поля которые не содержат специальные параметры для запроса, буду сравниваться на равенство.

// Найти все непрочитанные сообщения в комнате #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
Подсказка: когда пагинация включена, чтобы получить количество доступных записей установите $limit: 0.

$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

Valeriu :