我需要计算作品的受欢迎程度,这是通过喜欢+观看次数来计算的,
然后我有这样的关系:
User.belongsToMany(models.Work, {as: 'Likes', through: 'Likes'});
User.belongsToMany(models.Work, {as: 'Views', through: 'Views'});
我希望当我发现所有作品按流行顺序排列时,流行度不能成为表中的一列,因为这是按时间计算的,我认为这应该是一个虚拟字段。
global.db.Work.findAll({order: '`popularity` DESC'}).then(function(works){
});
答案 0 :(得分:0)
逻辑解决方案是在您的数据库中创建一个视图(如果它是一个sql数据库)。除此以外: 1.您必须进行原始查询:
sequelize.query("SELECT *, work.likes + work.views AS popularity FROM work ORDER BY popularity DESC", { type: sequelize.QueryTypes.SELECT})
.then(function(returnedRecords) {
// do your staff
// it's harder to manipulated returned records though if you want to
// change records and save into db.
})