Sql 续集顺序虚拟字段

Sql 续集顺序虚拟字段,sql,node.js,sequelize.js,Sql,Node.js,Sequelize.js,我需要计算作品的受欢迎程度,这是通过喜欢度+浏览量计算的 那么我有这样的关系: User.belongsToMany(models.Work, {as: 'Likes', through: 'Likes'}); User.belongsToMany(models.Work, {as: 'Views', through: 'Views'}); 我想当我发现所有作品都是按流行度排序的时候,流行度不能是表中的一列,因为这是按时间计算的,我认为这应该是一个虚拟字段 global.db.Work.fin

我需要计算作品的受欢迎程度,这是通过喜欢度+浏览量计算的

那么我有这样的关系:

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){

});

如果数据库是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.
})
在脚本中对结果进行排序。