node.js - SequelizeEagerLoadingError 'Model 1' 与 'Model 2' 没有关联

标签 node.js express sequelize.js

我正在使用sequelize版本:5.21.2,并且出现以下错误:“推文未与用户关联!”

Error: { SequelizeEagerLoadingError: Tweet is not associated to User!
    at Function._getIncludedAssociation (D:\References\Youtube\Sequelize\sequelize-1-hour\node_modules\sequelize\lib\model.js:715:13)
    at Function._validateIncludedElement (D:\References\Youtube\Sequelize\sequelize-1-hour\node_modules\sequelize\lib\model.js:619:53)
    at options.include.options.include.map.include (D:\References\Youtube\Sequelize\sequelize-1-hour\node_modules\sequelize\lib\model.js:516:37)
    at Array.map (<anonymous>)

我有两个模型

Tweet.js

const Sequelize = require('sequelize');

//sequelize comes from global.sequelize in connection.js
const Tweet = sequelize.define('Tweet', {
  id: {
    type: Sequelize.INTEGER(11),
    allowNull: true,
    autoIncrement: true,
    primaryKey: true
  },
  userId: Sequelize.INTEGER(11),
  content: Sequelize.STRING(300)
});

Tweet.associate = function(models) {
  Tweet.belongsTo(models.User, { foreignKey: 'userId' });
};

module.exports = Tweet;

User.Js

const Sequelize = require('sequelize');

//sequelize comes from global.sequelize in connection.js
const User = sequelize.define('User', {
  id: {
    type: Sequelize.INTEGER(11),
    primaryKey: true
  },
  username: {
    type: Sequelize.STRING(35),
  },
  passwd: {
    type: Sequelize.STRING(20),
    allowNull: false
  }
});

User.associate = function(models) {
  User.hasMany(models.Tweet);
};


module.exports = User;

抛出错误的代码是

  const users = await User.findAll({
    where: { id: '1' },
    include: [Tweet]
  }).catch(errHandler);

我不知道如何在获取用户时包含推文。

最佳答案

您已经在模型中定义了创建关联的函数。但是,您永远不会调用这些函数。实例化 Sequelize 对象并初始化模型后,您应该运行以下代码来创建关联:

for(let modelName in sequelize.models) {
  sequelize.models[modelName].associate(sequelize.models);
}

参见:

关于node.js - SequelizeEagerLoadingError 'Model 1' 与 'Model 2' 没有关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59106377/

相关文章:

javascript - async/await 不适用于 mongoDB 查询

javascript - 如何等待 Mongoose 搜索的返回?

javascript - 如何从 AngularJS 向本地服务器上的应用发出 $http 请求?

javascript - req.body.content 给出 undefined - Express JS

node.js - Uber API - 使用非开发人员登录时的 invalid_grant

javascript - 从服务器获取 react 后我收到空对象

node.js - Webpack 生产 process.env.PORT=在服务器编译时未定义(React 应用程序)

javascript - sequelize 不创建表显示此结果 : "Executing (default): SELECT 1+1 AS result"

mysql - sequelize - 如何添加额外的字段

associations - Sequelize 关联