【发布时间】:2022-01-22 04:37:52
【问题描述】:
我只想在 sequelize 中执行这个简单的 mysql 查询,但这真的很混乱..
SELECT *,
(SELECT COUNT(*)
FROM user_review_like
WHERE user_review_like.review_id = review.id)
FROM reviews
所以我就这样尝试了。
const reviewList = await Review.findAndCountAll({
attributes: ['*', fn('COUNT', col('user_review_like'))],
include: [
{
model: UserReviewLike,
attributes: [],
},
],
where,
raw: true,
offset: offset,
limit: 5,
order,
});
但它说'userReviewLike 与评论无关!'
模型“审查”:
static associate(db) {
db.Review.belongsTo(db.User); --> for matching review writer and users
db.Review.belongsToMany(db.User, {through: 'user_review_like', foreignKey: 'review_id'});
}
模型“用户”:
static associate(db) {
db.User.hasMany(db.Review);
db.User.belongsToMany(db.Review, {through: 'user_review_like', foreignKey: 'user_id'});
}
模型'userReviewLike':
{
user_id: {
},
review_id: {
},
},
static associate(db) {
db.UserReviewLike.belongsTo(db.User, {
foreignKey: 'user_id'
});
db.UserReviewLike.belongsTo(db.Review, {
foreignKey: 'review_id'
});
}
这似乎更方便,因为我正在动态设置位置和顺序, 但我对连接查询感到困惑。
请给点建议
谢谢
【问题讨论】:
标签: mysql node.js orm sequelize.js sequelize-cli