Sequelize Associations-Fehler: „Produkt ist nicht mit CartItem verknüpft“, während Beziehungen geladen werdenJavaScript

Javascript-Forum
Guest
 Sequelize Associations-Fehler: „Produkt ist nicht mit CartItem verknüpft“, während Beziehungen geladen werden

Post by Guest »

Ich arbeite an einem Node.js-Projekt mit Sequelize und es tritt ein Fehler auf, wenn ich versuche, zugehörige Daten mit Eager Loading abzurufen. Hier ist der Fehler:

Code: Select all

Error fetching cart items: EagerLoadingError [SequelizeEagerLoadingError]: Product is not associated to CartItem!
Hier ist der relevante Teil meines Setups:

CartItem Model

Code: Select all

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;

Produktmodell

Code: Select all

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;

Datenbank einrichten

Code: Select all

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

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

Abfrage

Code: Select all

const cartItems = await CartItem.findAll({
include: [{ model: Product, as: "product" }],
});
Obwohl die Zuordnungen ordnungsgemäß definiert wurden, bleibt der Fehler weiterhin bestehen. Was könnte dieses Problem verursachen und wie kann ich es beheben?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post