我的架构由用户和评论组成。基本上,每个用户都可以对另一个用户进行评论。由于我需要从仅被审核的用户那里获得所有评论,因此我写了以下关联:
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 },
});
答案 0 :(得分:3)
这就是诀窍。我只依赖belongsTo的默认实现。
numpy