2015-10-08 37 views
1

我正在處理Sails.js我試圖在播放列表模型中存儲一些曲目。請勿通過Sails.js的集合屬性中的id記錄進行排序

這就像:

Playlist = { 
attributes : { 
    tracks: { 
    collection: 'track' 
    } 
} 
} 

我的問題是,播放列表有曲目列表,其中的曲目有一個特定的順序。

例如,當我創建播放列表:

var tracksIds = [5,2,10]; 
// Create 
Playlist.create({tracks: tracksIds}) 
// Return => 
    Playlist = { 
    tracks: [2,5,10] 
    } 

// Needed => 
    Playlist = { 
    tracks: [5,2,10] 
    } 

所以我的問題是:如何強制帆不通過ID順序在軌道集合中的記錄?

謝謝!

回答

2

要保持訂單信息,您需要某個訂單屬性。

在純關係數據庫邏輯中,您需要播放列表和音軌之間的中間表。首先,因爲很多關係需要它,其次,存儲播放列表中曲目的訂單信息。

如何在Sails中實現這一點?那麼文檔指定這是不可能的: http://sailsjs.org/documentation/concepts/models-and-orm/associations/through-associations

他們建議您自己創建中間模型作爲解決方法。

這意味着你有三種型號

  • 軌道
  • 播放列表
  • PlaylistTrack(或PlaylistEntry,等等,任何你想要的)

的PlaylistTrack模式將有一個單>與Track和Playlist的許多關係以及訂單屬性。類似這樣的:

module.exports = { 
    attributes: { 
    playlist: { 
     model: 'playlist' 
    }, 
    track: { 
     model: 'track' 
    }, 
    order: 'integer' 
    } 
} 

您還需要將集合屬性添加到播放列表。您可能需要檢查訂單對於每個播放列表/音軌組合是否也是唯一的。

現在您可以使用Model.sort()方法正確地訂購曲目

+0

好!你真的幫了我,謝謝! –

相關問題