2015-04-05 70 views
0

我需要計算工程的普及,這是由喜歡+意見的數量來計算,Sequelize爲了虛擬領域

然後,我有這樣的關係:

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

的合理的解決辦法來創造你的數據庫視圖(如果它是一個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. 
}) 
  • 令你的腳本中的結果。