Ошибка: .Многие вызывали что-то, что не является подклассом Sequelize.Модель

#node.js #postgresql #express #sequelize.js

Вопрос:

Я использую Node.js с Express.js и продолжайте как ORM.

У меня есть клиент модели, который связан с заказом модели. (У клиента много заказов).

Вот так просто:

 const { Model, DataTypes, Sequelize } = require('sequelize');  const { USER_TABLE } = require('./user.model');  const CUSTOMER_TABLE = 'customers';  const CustomerSchema = {  id: {  allowNull: false,  autoIncrement: true,  primaryKey: true,  type: DataTypes.INTEGER,  },  name: {  allowNull: false,  type: DataTypes.STRING,  },  lastName: {  allowNull: false,  type: DataTypes.STRING,  field: 'last_name',  },  phone: {  allowNull: true,  type: DataTypes.STRING,  },  createdAt: {  allowNull: false,  type: DataTypes.DATE,  field: 'created_at',  defaultValue: Sequelize.NOW,  },  userId: {  field: 'user_id',  allowNull: false,  type: DataTypes.INTEGER,  unique: true,  references: {  model: USER_TABLE,  key: 'id',  },  onUpdate: 'CASCADE',  onDelete: 'SET NULL',  }, };  class Customer extends Model {  static associate(models) {  this.belongsTo(models.User, { as: 'user' });  this.hasMany(models.Order, { as: 'orders', foreignKey: 'customerId' }); here is the error  }   static config(sequelize) {  return {  sequelize,  tableName: CUSTOMER_TABLE,  modelName: 'Customer',  timestamps: false,  };  } }  module.exports = { CUSTOMER_TABLE, CustomerSchema, Customer };   

А с другой стороны, типовой порядок:

 const { Model, DataTypes, Sequelize } = require('sequelize');  const { CUSTOMER_TABLE } = require('../models/customer.model');  const ORDER_TABLE = 'orders';  const OrderSchema = {  id: {  allowNull: false,  autoIncrement: true,  primaryKey: true,  type: DataTypes.INTEGER,  },  customerId: {  field: 'customer_id',  allowNull: false,  type: DataTypes.INTEGER,  unique: true,  references: {  model: CUSTOMER_TABLE,  key: 'id',  },  onUpdate: 'CASCADE',  onDelete: 'SET NULL',  },  createdAt: {  allowNull: false,  type: DataTypes.DATE,  field: 'created_at',  defaultValue: Sequelize.NOW,  }, };  class Order extends Model {  static associate(models) {  this.belongsTo(models.Customer, { as: 'customer' });  }   static config(sequelize) {  return {  sequelize,  tableName: ORDER_TABLE,  modelName: 'Customer',  timestamps: false,  };  } }  module.exports = { ORDER_TABLE, OrderSchema, Order };  

index.js

 const { User, UserSchema } = require('./user.model'); const { Customer, CustomerSchema } = require('./customer.model'); const { Category, CategorySchema } = require('./category.model'); const { Product, ProductSchema } = require('./product.model'); const { Order, OrderSchema } = require('./order.model');  function setupModels(sequelize) {  User.init(UserSchema, User.config(sequelize));  Customer.init(CustomerSchema, Customer.config(sequelize));  Category.init(CategorySchema, Category.config(sequelize));  Product.init(ProductSchema, Product.config(sequelize));  Order.init(OrderSchema, Order.config(sequelize));   User.associate(sequelize.models);  Customer.associate(sequelize.models);  Category.associate(sequelize.models);  Product.associate(sequelize.models);  Order.associate(sequelize.models); }  module.exports = setupModels;   

Но когда я запускаю узел, я получаю эту ошибку: Customer.hasMany called with something that's not a subclass of Sequelize.Model

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