Ошибка Sequelize Associations: «Продукт не связан с CartItem» при активной загрузке отношенийMySql

Форум по Mysql
Ответить
Anonymous
 Ошибка Sequelize Associations: «Продукт не связан с CartItem» при активной загрузке отношений

Сообщение Anonymous »


Я работаю над проектом Node.js с использованием Sequelize и столкнулся с ошибкой при попытке получить связанные данные с быстрой загрузкой. Вот ошибка:

Код: Выделить всё

Error fetching cart items: EagerLoadingError [SequelizeEagerLoadingError]: Product is not associated to CartItem!
Вот соответствующая часть моей настройки:

Модель CartItem

Код: Выделить всё

const { DataTypes } = require("sequelize");
const sequelize = require("../config/database");
const { CART_ITEM_STATUS } = require("../constants");

const CartItem = sequelize.define(
"CartItem",
{
productId: {
type: DataTypes.INTEGER,
references: {
model: "Products",
key: "id",
},
allowNull: false,
},
quantity: {
type: DataTypes.INTEGER,
allowNull: false,
},
purchasePrice: {
type: DataTypes.FLOAT,
defaultValue: 0,
},
status: {
type: DataTypes.ENUM(
CART_ITEM_STATUS.Not_processed,
CART_ITEM_STATUS.Processing,
CART_ITEM_STATUS.Shipped,
CART_ITEM_STATUS.Delivered,
CART_ITEM_STATUS.Cancelled
),
defaultValue: CART_ITEM_STATUS.Not_processed,
},
},
{
tableName: "cart_items",
timestamps: false,
}
);

module.exports = CartItem;

Модель продукта

Код: Выделить всё

const { DataTypes } = require("sequelize");
const sequelize = require("../config/database");
const CartItem = require("./cartitem");

const Product = sequelize.define(
"Product",
{
id: {
type: DataTypes.STRING(64),
primaryKey: true,
defaultValue: () => {
return crypto.createHash("sha256").update(uuidv4()).digest("hex");
},
},
name: {
type: DataTypes.STRING(255),
allowNull: true,
},
},
{
tableName: "products",
timestamps: false,
}
);

Product.hasMany(CartItem, {
foreignKey: "productId",
as: "items",
});

CartItem.belongsTo(Product, {
foreignKey: "productId",
as: "product",
});

module.exports = Product;

Настройка базы данных

Код: Выделить всё

CartItem.belongsTo(Product, { foreignKey: "productId", as: "product" });
Product.hasMany(CartItem, { foreignKey: "productId", as: "cartItems" });

await sequelize.sync({ alter: true });

Запрос

Код: Выделить всё

const cartItems = await CartItem.findAll({
include: [{ model: Product, as: "product" }],
});
Несмотря на правильное определение ассоциаций, ошибка сохраняется. Что может быть причиной этой проблемы и как ее устранить?


Подробнее здесь: https://stackoverflow.com/questions/793 ... while-eage
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»