Sequelize hasMany工作正常,但反比关系不正常

我试图在Node Js(express Js)中使用Sequelize来处理mysql关系。

User.hasMany(Post); 工作就好了,但当我试图反转它在Post模型一样。Post.belongsTo(User);

得到了这个错误。 throw new Error(${source.name}.${_.lowerFirst(Type.name)}调用的东西不是Sequelize.Model的子类)。

错误:post. belongsTo被调用的东西不是Sequelize.Model的子类。

用户模式喜欢。

const Sequelize = require('sequelize');
const db = require('../config/db');

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

const User = db.define('user', {
    id: {
        type: Sequelize.INTEGER,
        autoIncrement: true,
        notNull: true,
        primaryKey: true
    },
    name: {
        type: Sequelize.STRING,
        notNull: true
    },
    email: {
        type: Sequelize.STRING,
        notNull: true
    },
    password: {
        type: Sequelize.STRING,
        notNull: true
    }

});

User.hasMany(Post);

module.exports = User;

和帖子模式一样。

const Sequelize = require('sequelize');
const db = require('../config/db');

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

const Post = db.define('post', {
    id: {
        type: Sequelize.INTEGER,
        autoIncrement: true,
        notNull: true,
        primaryKey: true
    },

    title: {
        type: Sequelize.STRING,
        notNull: true
    },
    description: {
        type: Sequelize.TEXT,
        notNull: true
    },
    author: {
        type: Sequelize.STRING,
        notNull: true
    }
});

Post.belongsTo(User);

module.exports = Post;

如何解决这个问题? 谢谢大家…

解决方案:

你应该纠正你的模型定义,导出为函数,并定义了 联想 在每个模型定义函数中,像这样的函数,当所有的模型都注册到某个模块(如数据库.js)后,再全部调用它。

user. js

module.exports = (sequelize, DataTypes) => {
  const User = sequelize.define('user', {
    id: {
        type: Sequelize.INTEGER,
        autoIncrement: true,
        notNull: true,
        primaryKey: true
    },
   ...

  User.associate = function (models) {
    User.hasMany(models.Post)
  }

post.js

module.exports = (sequelize, DataTypes) => {
  const Post = sequelize.define('post', {
    id: {
        type: Sequelize.INTEGER,
        autoIncrement: true,
        notNull: true,
        primaryKey: true
    },
  ...
  Post.associate = function (models) {
    Post.belongsTo(models.User)
  }

给TA打赏
共{{data.count}}人
人已打赏
解决方案

如何在邮件被验证时更新Firebase用户流的数据(Flutter)

2022-4-22 7:00:09

解决方案

如何增加或减少购物车中的商品?

2022-4-22 7:00:12

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索