SequelizeEagerLoadingError:别名中的多对多模型错误

时间:2017-11-27 12:44:23

标签: sequelize.js

我在StackOverflow上搜索了一些答案,但找不到任何能解决我问题的答案,所以就这样了。 我有2个模型,动作和用户。一个用户可以喜欢许多操作,许多用户都可以喜欢一个操作。

user.js的

module.exports = (sequelize, DataTypes) => {
      const user = sequelize.define('User', {
        name: {
          type: DataTypes.STRING,
          allowNull: false
        },
        username: {
          type: DataTypes.STRING,
          allowNull: false,
          unique: true
        },
      }, {
        freezeTableName: true,
      })

      user.associate = (models) => {
        user.hasMany(models.Action, {
          onDelete: 'CASCADE',
          onUpdate: 'CASCADE'
        })

        user.belongsToMany(models.Action, {
          as: 'users_that_liked',
          through: 'Like',
          foreignKey: 'userId',
          onDelete: 'CASCADE',
          onUpdate: 'CASCADE'
        })
      }

      return user
}

Action.js

module.exports = (sequelize, DataTypes) => {
  const action = sequelize.define('Action', {
    title: {
      type: DataTypes.STRING,
      allowNull: false
    },
  }, {
    freezeTableName: true
  })

  action.associate = (models) => {
    action.belongsTo(models.User, {
      onDelete: 'CASCADE',
      onUpdate: 'CASCADE'
    })

    action.belongsToMany(models.User, {
      through: 'Like',
      foreignKey: 'actionId',
      onDelete: 'CASCADE',
      onUpdate: 'CASCADE'
    })
  }

  return action
}

这是我的方法:

get_action (req, res) {
    return Action
      .findOne({
        attributes: ['id', 'title'],
        where: {
          id: req.params.id
        },
        include: [
          {
            model: User,
            attributes: ['id', 'name']
          }
          {
            model: User,
            as: 'users_that_liked'
          }
        ]
      })
      .then(action => res.status(200).send(action))
      .catch(error => res.status(500).send(error.toString()))
  }

第一个包含我希望让用户“发布”此操作,而第二个我希望得到所有喜欢此操作的用户。 当我运行此方法时,它会说:“SequelizeEagerLoadingError:用户多次与Action关联。要识别正确的关联,您必须使用'as'关键字来指定要包含的关联的别名。”

只是为了它,我尝试取出下一部分,但错误消息说别名'users_that_liked'不正确:

      {
        model: User,
        attributes: ['id', 'name']
      }

我是在定义错误的模型吗?

0 个答案:

没有答案