首页 > 解决方案 > 错误:使用不是 Sequelize.Model 子类的东西调用 Sequelize Assosication

问题描述

大家好,当我在我的模型中添加 Sequelize 的关联时,我遇到一个错误“错误:Text.belongsTo 调用了不是 Sequelize.Model 的子类”,它调用了一个错误,我称之为不是 Sequelize 模型。

这是我的模型的代码,我尝试在 Post 模型和 Text 模型之间创建关联。

./Post.js

const { DataTypes } = require('sequelize');
const sequelize = require('../../db/sequelize.setup');

const Text = require('./Text');

const Post = sequelize.define(
  'Post',
  {
    id: {
      type: DataTypes.INTEGER,
      autoIncrement: true,
      primaryKey: true,
      allowNull: false,
    },
    title: {
      type: DataTypes.STRING(),
      allowNull: false,
    },
    tags: {
      type: DataTypes.ARRAY(DataTypes.INTEGER),
      allowNull: true,
    },
    items: {
      type: DataTypes.ARRAY(DataTypes.INTEGER),
      allowNull: false,
    },
    author: {
      type: DataTypes.INTEGER,
    },
  },
  {
    modelName: 'Post',
    timestamps: true,
  }
);

  Post.hasMany(Text, {
    as: 'Text',
    foreignKey: 'post_id',
    sourceKey: 'id',
  });

module.exports = Post;

./Text.js

 const { DataTypes } = require('sequelize');
    const sequelize = require('../../db/sequelize.setup');
    
    const Post = require('./Post');
    
    const Text = sequelize.define(
      'Text',
      {
        id: {
          type: DataTypes.INTEGER,
          autoIncrement: true,
          primaryKey: true,
          allowNull: false,
        },
        text: {
          type: DataTypes.STRING(),
          allowNull: false,
        },
      },
      {
        modelName: 'Text',
        timestamps: true,
      }
    );
    
    Text.belongsTo(Post, { as: 'Post', foreignKey: 'post_id', targetKey: 'id' });
    
    module.exports = Text;

标签: node.jspostgresqlsequelize.js

解决方案


尝试在您的模型文件夹中创建一个index.js文件,并在其中使您的关联像这样

const db = {};
db.Sequelize = Sequelize;
db.sequelize = sequelize;
db.posts=require("./post.js")(sequlize,sequlize);
db.texts=require....
db.posts.hasMany(db.texts, { foreignKey: 'postId' });
db.texts.belongsTo(db.posts, { foreignKey: 'postId' });

并将 postId 放入 text.js 模型中


推荐阅读