Sequelize:多个belongsTo和hasMany问题

时间:2018-05-18 07:54:59

标签: javascript sequelize.js

我的架构由用户和评论组成。基本上,每个用户都可以对另一个用户进行评论。由于我需要从仅被审核的用户那里获得所有评论,因此我写了以下关联:

User.hasMany(Review, { as: 'reviews', foreignKey: { name: 'reviewee', allowNull: false } });
Review.belongsTo(User, { as: 'user', foreignKey: { name: 'reviewee', allowNull: false } });
Review.belongsTo(User, { as: 'author', foreignKey: { name: 'reviewer', allowNull: false } });

当我尝试获取用户评论时

User.findById(1, {
  include: [{
    model: Review,
    as: 'reviews'
  }]
}).then((user) => {
  console.log(user.reviews);
});

它给出了这个错误

SequelizeDatabaseError: SQLITE_ERROR: no such column: reviews.reviewee

编辑:以下是模型

const User = sequelize.define('User', {
  id: { type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true },
  username: { type: Sequelize.STRING, allowNull: false, unique: true },
  email: { type: Sequelize.STRING, allowNull: false, unique: true },
  phone_number: { type: Sequelize.STRING, allowNull: false, unique: true },
  last_login: { type: Sequelize.DATE, allowNull: false, defaultValue: Sequelize.NOW },
  password: { type: Sequelize.STRING, allowNull: false },
  verified_email: { type: Sequelize.BOOLEAN, allowNull: false, defaultValue: false },
  verified_phone: { type: Sequelize.BOOLEAN, allowNull: false, defaultValue: false },
  verified_id: { type: Sequelize.BOOLEAN, allowNull: false, defaultValue: false },
  password_change_date: { type: Sequelize.DATE, allowNull: false, defaultValue: Sequelize.NOW },
  role: { type: Sequelize.ENUM('admin', 'user'), allowNull: false, defaultValue: 'user' }
});

const Review = sequelize.define('Review', {
  id: { type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true },
  text: { type: Sequelize.STRING, allowNull: false },
});

1 个答案:

答案 0 :(得分:3)

这就是诀窍。我只依赖belongsTo的默认实现。

numpy
相关问题