Автор оригинала: Victor Nwaiwu.
Виктор Нваиву
Этот пост является напоминанием для себя о том, как я смог отладить проблему, с которым я имел в себе в отношении использования Sequelize
Сырые запросы SQL в проекте я работал некоторое время назад. У меня была такая же проблема в другом проекте, над которым я работал, и когда я смог понять это, я сказал себе, что я записал шаги, которые я сделал, чтобы убедиться, что я снова не сталкивался с такой проблемой. Надеюсь, этот пост также поможет кому-то там и сэкономить бесчисленные часы и сделать вас более продуктивными.
В большинстве случаев, когда мы используем Sequelize
Мы используем встроенные запросы, потому что он обрабатывает основные запросы, которые мы можем захотеть работать в нашем приложении. Но приходит время, когда мы хотим сделать больше, чем просто основные запросы, выполните более сложные запросы, и мы удивляемся, если Sequelize
могу справиться с этим. Ответ да. Но документация может быть немного сложной, чтобы понять сначала. Я буду пользоваться образцом проекта, который я работал, чтобы показать, как мы можем написать комплексные запросы SQL SQL в Sequelize
и выражать JS.
Настройка проекта, используя Sequelize
Ваш Модель/index.js
может выглядеть что-то подобное:
В этом примере мы пытаемся получить следующие результаты из БД:
- Все заработки для всех автомобилей, которыми они владеют.
- Вся доход для всех автомобилей, которыми они имеют за текущий месяц.
отформатированный фрагмент кода
Здесь мы используем два способа написания RAW SQL-запросов в Sequelize
Отказ
Код из линии 21-24 использует Sequelize Querytpes
Это определяет способ возвращения результата. Когда мы используем это Тип
Опция, возвращенный результат – это просто обычный массив объекта, который представляет собой пораженные/возвращенные строки.
Код из линии 27-31 использует модель модели, которое говорит Sequelize
Чтобы вернуть результат в качестве экземпляра указанного модели. Это полезно, если вы хотите использовать экземпляр модели для выполнения других действий.
Также, от фрагментации кода, мы видим, что некоторые варианты передаются на Sequelize.Query ()
метод.
Вариант запросов аргументы
Опция замены может быть в двух формах
Дополнительный формат замены
Если вы посмотрите на первый фрагмент, динамические значения в необработанном запросе обернуты в ()
И ключ установлен в нем. Это позволяет Sequelize
Чтобы проверить в замена
Свойство для связанного ключа в запросе. Таким образом, при использовании этого формата свойство замены является объектом с соответствующими ключами в запросе, определенном в нем.
Для второго фрагмента, замена
Свойство – это массив, который интерпретируется запросом ?
символ.
Другой вопрос, который у вас может быть, если имя вашей модели находится в камере или отличается от того, как он определяется в таблице. Вам нужно было избежать имени таблицы или ж Sequelize
будет бросать Соотношение не существует ошибки
Отказ Я надеюсь, что это поможет кому-то там, а также помогает мне в будущем. Не стесняйтесь добраться до меня, если у вас есть какие-либо вопросы в отношении пишущих сырьевых запросов в Sequelize Отказ