续订订单虚拟字段

时间:2015-04-05 20:07:54

标签: sql node.js sequelize.js

我需要计算作品的受欢迎程度,这是通过喜欢+观看次数来计算的,

然后我有这样的关系:

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

});

1 个答案:

答案 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.
})
  1. 在您的脚本中订购结果。