【问题标题】:Sequelize eager loading: hasMany include parent续集急切加载:hasMany 包含父级
【发布时间】:2016-12-26 11:42:37
【问题描述】:

我有以下两种型号:

module.exports = function(sequelize, DataTypes) {
  var ChatRoom = sequelize.define('ChatRoom', {
    status: DataTypes.STRING,
  }, {
    classMethods: {
      associate: function(models) {
        ChatRoom.hasMany(models.User)
        ChatRoom.hasMany(models.Message)
      }
    }
  });

  return ChatRoom;
};

module.exports = function(sequelize, DataTypes) {
  var User = sequelize.define("User", {
    friendly_id: DataTypes.STRING,
  }, {
    classMethods: {
      associate: function(models) {
        User.hasMany(models.Message)
      }
    }
  });

  return User;
};

当我获取用户时,我也想获取关联的ChatRoom。我尝试了以下

models.User.findOne({
  where: {messenger_id: senderID},
  include: [{model: models.ChatRoom}]
}).then(function(user) { ... })

但我得到了这个错误

ChatRoom is not associated to User!

【问题讨论】:

    标签: node.js sequelize.js


    【解决方案1】:

    在定义User 模型时,您还应该将此模型与ChatRoom 模型相关联。

    我不知道你的业务逻辑,但我想User 模型的associate 方法应该是这样的:

    associate: function(models) {
        User.hasMany(models.Message);
        User.belongsTo(models.ChatRoom, {
            onDelete: "CASCADE",
            foreignKey: {
                allowNull: false
            }
        });
    }
    

    【讨论】:

      猜你喜欢
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-11
      • 1970-01-01
      相关资源
      最近更新 更多