javascript - Sequelize 4.3.2 n :m (many-to-many) association: Unhandled rejection SequelizeEagerLoadingError

标签 javascript node.js orm sequelize.js

我有 3 个模型:用户、项目、用户项目:

module.exports = function (sequelize, DataTypes) {
  var User = sequelize.define('User', {
  title: DataTypes.STRING,
  description: DataTypes.STRING
}, {
  classMethods: {
    associate: function (models) {
      User.belongsToMany(models.Project, { 
        through: 'UserProject',
        foreignKey: 'userId'
      })
    }
  },
  freezeTableName: true
})
  return User
}


module.exports = function (sequelize, DataTypes) {
  var Project = sequelize.define('Project', {
  title: DataTypes.STRING,
  description: DataTypes.STRING
  }, {
  classMethods: {
    associate: function (models) {
      Project.belongsToMany(models.User, { 
        through: 'UserProject',
        foreignKey: 'projectId'
      })
    }
  },
  freezeTableName: true
})
  return Project
}


module.exports = function (sequelize, DataTypes) {
 var UserProject = sequelize.define('UserProject', {
  userId: DataTypes.INTEGER,
  projectId: DataTypes.INTEGER,
 }, {
  classMethods: {
 },
  freezeTableName: true
 })
  return UserProject
}

上面的代码与一些旧版本的 Sequelize 完美配合。现在我更新到 Sequelize 4.3.2,在尝试使用这些模型时出现以下错误:

未处理的拒绝 SequelizeEagerLoadingError:项目未关联到用户!

这有什么问题吗?我试图在这里进行多对多关联,并在 findAll Projects 时包含 Users ,反之亦然。我正在使用 MySQL 作为数据库。

这是 findAll 部分:

function getUsersWithProjects (request, response, next) {
  models.User.findAll({
    include: [{
      model: models.Project,
    }]
  });
}

最佳答案

现在我找到了解决方案。显然他们已经删除了 classMethodsinstanceMethods,所以关联现在定义如下:

module.exports = function (sequelize, DataTypes) {
  var User = sequelize.define('User', {
    title: DataTypes.STRING,
    description: DataTypes.STRING
  }, {
   freezeTableName: true
  })
  User.associate = function (models) {
   User.belongsToMany(models.Project, { 
    through: 'UserProject',
    foreignKey: 'userId'
   })
 };
 return User
}

来源:http://docs.sequelizejs.com/manual/tutorial/upgrade-to-v4.html

关于javascript - Sequelize 4.3.2 n :m (many-to-many) association: Unhandled rejection SequelizeEagerLoadingError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45151194/

相关文章:

javascript - 雷鸟扩展 : Get the mail HTML and Object

php - 使用 Node.js/socket.io 和 php/mysql 的 Web 应用程序

orm - Eloquent 关系过滤

javascript - Facebook 简单登入

javascript - 我怎样才能制作我的 anchor 标签(这个)

javascript - ES6 js 关键字作为参数的精确行为

sql-server - BLToolKit 保存 null 而不是 0

java - 每次在多对多关系中插入新数据时,以前的数据都会被删除

javascript - 单击按钮时的调用功能不起作用

node.js - 我应该如何在 NodeJS 中存储文件