不要按带有 Sails.js 的集合属性中的 id 记录排序
Don't order by id record in collection attribute with Sails.js
我正在处理 Sails.js 我正在尝试在我的播放列表模型中存储一些曲目。
是这样的:
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]
}
所以我的问题是:如何强制 Sails 不按 Id 对轨道集合中的记录进行排序?
谢谢!
要保存订单信息,您需要在某处设置订单属性。
在纯关系数据库逻辑中,您需要播放列表和曲目之间的中间 table。首先,因为 many<->many 关系需要它,其次,在播放列表中存储曲目的顺序信息。
如何在 Sails 中实现这个?那么文档指定这是不可能的:
http://sailsjs.org/documentation/concepts/models-and-orm/associations/through-associations
他们建议您自己创建中间模型作为解决方法。
这意味着你有三个模型
- 跟踪
- 播放列表
- PlaylistTrack(或 PlaylistEntry 等,任何你想要的)
PlaylistTrack 模型将与 Track 和 Playlist 以及 order 属性具有一对多关系。像这样:
module.exports = {
attributes: {
playlist: {
model: 'playlist'
},
track: {
model: 'track'
},
order: 'integer'
}
}
您还需要将 collection 属性添加到播放列表。您可能还想检查每个 playlist/track 组合的顺序是否也是唯一的。
现在您可以使用 Model.sort()
方法正确排序曲目
我正在处理 Sails.js 我正在尝试在我的播放列表模型中存储一些曲目。
是这样的:
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]
}
所以我的问题是:如何强制 Sails 不按 Id 对轨道集合中的记录进行排序?
谢谢!
要保存订单信息,您需要在某处设置订单属性。
在纯关系数据库逻辑中,您需要播放列表和曲目之间的中间 table。首先,因为 many<->many 关系需要它,其次,在播放列表中存储曲目的顺序信息。
如何在 Sails 中实现这个?那么文档指定这是不可能的: http://sailsjs.org/documentation/concepts/models-and-orm/associations/through-associations
他们建议您自己创建中间模型作为解决方法。
这意味着你有三个模型
- 跟踪
- 播放列表
- PlaylistTrack(或 PlaylistEntry 等,任何你想要的)
PlaylistTrack 模型将与 Track 和 Playlist 以及 order 属性具有一对多关系。像这样:
module.exports = {
attributes: {
playlist: {
model: 'playlist'
},
track: {
model: 'track'
},
order: 'integer'
}
}
您还需要将 collection 属性添加到播放列表。您可能还想检查每个 playlist/track 组合的顺序是否也是唯一的。
现在您可以使用 Model.sort()
方法正确排序曲目