Хобрук: Ваш путь к мастерству в программировании

Как включить более одной другой таблицы с помощью Sequelize?

У меня есть следующие таблицы:

Product:
name: string, description: string, image: string

Brand:
name: string

Category:
name: string

У одного продукта может быть только один бренд. У одного продукта может быть несколько категорий.

Мои ассоциации:

models/product.js:
Product.associate = function(models) {
    Product.hasOne(models.Brand, {
      foreignKey: "productId",
      as: "brand"
    }),
      Product.hasMany(models.Category, {
        foreignKey: "productId",
        as: "categories"
      });
  }
models/category.js:
Category.belongsTo(models.Product, {
      foreignKey: "productId",
      onDelete: "CASCADE"
    })
models/brand.js:
Brand.belongsTo(models.Product, {
      foreignKey: "productId",
      onDelete: "CASCADE"
    })

1- пока все нормально? Отступ в models/product.js кажется мне странным.

2- в моем контроллере продуктов, как мне получить как бренд, так и категории моих продуктов? В настоящее время у меня есть:

controllers/products.js:
list(req, res) {
    return Product.findAll({
      include: [
        {
          model: Category,
          as: "categories"
        }
      ]
    })
      .then(products => res.status(200).send(products))
      .catch(error => res.status(400).send(error));
  }

Категории включены, как мне также включить бренд?

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


Ответы:


1

Учитывая установленные ассоциации, вы сможете добавить другую модель, разделенную запятыми, например так:

controllers/products.js:
list(req, res) {
    return Product.findAll({
      include: [
        {
          model: Category,
          as: "categories"
        },
        {
          model: Brand,
          as: "brand"
        }
      ]
    })
      .then(products => res.status(200).send(products))
      .catch(error => res.status(400).send(error));
  }

15.04.2019
Новые материалы

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

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

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

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

Как построить любой стол
Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

Обзор: Машинное обучение: классификация
Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

Разработка расширений Qlik Sense с qExt
Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..