Запрос данных в базе данных Canonic!

Всякий раз, когда мы хотим взаимодействовать с нашей базой данных, необходимо подать сигнал в бэкенд о том, что мы хотим внести изменения, получить какие-то данные, обновить запись и т.д. Именно здесь мы запрашиваем нашу базу данных. Запрос — это ключевое слово, означающее, что наша внутренняя система получила сигнал о том, что мы хотим выполнить какое-то действие с нашими данными, и характер этого действия определяется тем, какой запрос мы хотим выполнить.

Запрос к базе данных — это либо запрос действия, либо запрос выбора.

  • Запрос на выборку — для получения данных из базы данных.
  • Запрос действия — для вставки, обновления, удаления или других форм манипулирования данными.

В этом блоге я расскажу вам о том, как выполнить несколько базовых запросов в проекте canonic, в котором есть некоторые существующие записи данных.

Мы рассмотрим:

  • Фильтрация данных
  • Поиск записи или группы записей
  • Сортировка результатов запроса

Поиск данных

Поиск данных является наиболее часто выполняемой операцией в базе данных, поскольку в силу того, что данные хранятся в базе данных, само собой разумеется, что вы захотите найти эти данные для выполнения некоторых операций в вашем приложении.

Существует два основных способа поиска данных:

  • Выполнение поискового запроса для уникальной записи данных
  • Выполнение поискового запроса для группы данных (подробнее об этом мы поговорим в разделе «Фильтрация данных»).

Для поиска уникальной записи данных рассмотрим, что у нас есть список продуктов в нашей базе данных, и мы хотим получить только уникальную запись данных.

Давайте рассмотрим проект инвентаризации товаров, чтобы понять это на реальном примере!

У нас есть проект, в котором есть несколько продуктов, перечисленных в таблице продуктов, как вы можете видеть ниже.

В левом меню внутри графика вы можете увидеть подменю конечных точек, которое заполняет конечные точки для этой конкретной таблицы продуктов.

Давайте теперь нажмем на конечную точку product, потому что это общая конечная точка, в которой можно получить уникальный ввод данных. Аналогичная конечная точка для вашей таблицы будет предварительно создана canonic для вас!

  • Щелкните на узле graph, чтобы открыть настройки для этой конечной точки
  • Перейдите к разделу кода и разверните его с помощью левой нижней стрелки

Здесь вы увидите, что метод имеет следующий код:

module.exports = async function getOne({ _id }) {
  return Product.findOne({ _id }).populate([]);
}
Войти в полноэкранный режим Выйти из полноэкранного режима

По умолчанию этот метод принимает уникальный ID для продукта в нашей базе данных, и если какая-либо запись совпадает со значением переданного нами ID, мы получим эту запись в ответ.

Теперь давайте поищем запись Nike Shoes в нашей базе данных, передав ее уникальный ID в качестве аргумента нашей функции.

Самое интересное, что вам не нужно запускать этот код на вашем фронтенде, чтобы увидеть, как он будет работать, просто передайте это значение в разделе Input и нажмите кнопку Test code Button (значок воспроизведения) в центре, чтобы запустить этот код.

Как вы можете видеть выше, мы передали уникальный ID, сопоставленный с ключом _id в объекте в качестве входных данных, и получили результаты, как и ожидалось. Вуаля!


Фильтруйте данные

Фильтрация данных — это один из самых важных примеров использования запроса к базе данных для любого продукта. Существует множество случаев, когда нам может потребоваться сократить получаемые данные на основе некоторых фильтров, потому что это просто эффективно.

Чтобы получить только подмножество, мы должны выяснить, какие продукты нам нужны, и для этого нам нужно добавить ограничения. Если продукт соответствует ограничению, то нам нужно только общее понимание.

Это идеальное применение для запроса с фильтром.

Ключевое отличие здесь в том, что вместо использования метода .findOne() в нашей функции, мы будем использовать метод .find().

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

Допустим, я хочу искать только продукт Nike Shoes, потому что мне нужны данные этого продукта для некоторой операции.

Давайте теперь перейдем к графу проекта!

В левом меню внутри графика вы можете увидеть подменю конечных точек, которое заполняет конечные точки для этой конкретной таблицы продуктов.

Давайте теперь нажмем на конечную точку products, потому что это общая конечная точка getAll, где вы можете добавить свои фильтры, чтобы получить конкретные данные вместо всех записей. Аналогичная конечная точка для вашей таблицы будет предварительно создана canonic для вас!

  • Щелкните на узле graph, чтобы открыть настройки для этой конечной точки.
  • Перейдите в раздел кода и разверните его с помощью левой нижней стрелки.

У вас должен открыться интерфейс кода, похожий на скриншот ниже!

Здесь вы увидите, что метод имеет код

module.exports = async function getAll(query = {}) {
  return Product.find(query).populate([]);
}
Войти в полноэкранный режим Выйти из полноэкранного режима

Как вы видите, этот метод принимает аргумент query, и именно сюда мы передаем наши фильтры. Мы можем фильтровать на основе ключа в таблице.

Например, если я хочу отфильтровать товар с названием Nike Shoes, я должен передать запрос, который поможет мне достичь этого. Чтобы получить этот результат, нужно просто передать {"name": "Nike Shoes"} в качестве нашего запроса.

Как и в приведенном выше примере, все, что вам нужно сделать, чтобы проверить, работает ли ваш код, — это перейти на вкладку code узла graph и запустить его там.

Как вы можете видеть, мы получим вывод для этого продукта, который выглядит примерно так:

[
  {
    "name": "Nike Shoes",
    "_id": "62750be6d85a0a00096639f1",
    "createdAt": "2022-05-06T11:52:06.085Z",
    "updatedAt": "2022-05-06T11:52:06.085Z",
  }
]
Войти в полноэкранный режим Выход из полноэкранного режима

Это один из самых простых примеров того, как фильтровать данные на основе поля и его значения. Вы также можете создавать сложные запросы и фильтровать данные по своему усмотрению! Если вводимые данные соответствуют запросу, вы получите свои данные.


Сортировка результатов запроса

Сортировка результатов запроса — еще один важный вариант использования, который необходим нам в повседневной работе. Одним из классических примеров является сортировка товаров. Поскольку мы уже говорим о каталоге товаров, то в данном случае вам нужно перечислить товары в алфавитном порядке, поскольку пользователь может захотеть увидеть их в алфавитном порядке, будь то сортировка от A до Z или от Z до A. Такой шаблон часто встречается на сайтах электронной коммерции и является идеальным местом для добавления запроса сортировки.

В данном примере мы будем использовать конечную точку API getAll, аналогичную той, что мы использовали в разделе выше, и внесем небольшое изменение в функцию, соединив метод .sort() с нашим методом .find().

Чтобы дать вам немного больше контекста, давайте вкратце рассмотрим, как на самом деле работает метод sort. Он просто принимает объект в качестве аргумента, где вы можете указать поле, которое вы хотите отсортировать, и допустимые значения для этого ключа будут -1 или 1. Сопоставление ключа 1 отсортирует список по возрастанию, а сопоставление с -1 отсортирует его по убыванию.

Давайте теперь отсортируем список продуктов по их названиям!

Мы просто соединили метод sort и в качестве аргумента передали поле, по которому хотим отсортировать, и порядок, в котором хотим отсортировать.

Выполнив этот запрос, мы получим следующие результаты:

[
  {
    "name": "Amul Taaza",
    "_id": "62750bddd85a0a00096639ee",
    "createdAt": "2022-05-06T11:51:57.116Z",
    "updatedAt": "2022-05-06T11:51:57.116Z",
  },
  {
    "name": "Chocolate",
    "_id": "62738392c8db87000927fd50",
    "createdAt": "2022-05-05T07:58:10.536Z",
    "updatedAt": "2022-05-06T11:51:47.080Z",
  },
  {
    "name": "Lays",
    "_id": "62750bd7d85a0a00096639eb",
    "createdAt": "2022-05-06T11:51:51.375Z",
    "updatedAt": "2022-05-06T11:51:51.375Z",
  },
  {
    "name": "Nike Shoes",
    "_id": "62750be6d85a0a00096639f1",
    "createdAt": "2022-05-06T11:52:06.085Z",
    "updatedAt": "2022-05-06T11:52:06.085Z",
  }
]
Войти в полноэкранный режим Выйти из полноэкранного режима

Наши данные успешно отсортированы, и вот как мы выполняем запрос сортировки!


Спасибо за чтение! Если вы нашли эту статью полезной, пожалуйста, нажмите на кнопку 👏 и поделитесь ею, чтобы помочь другим найти ее! Не стесняйтесь оставлять комментарии 💬 ниже.

Оцените статью
Procodings.ru
Добавить комментарий