Javascript 如何将位置字段应用于Meteor mongo中的集合?
我的用例 我有一个在线音乐播放器的播放列表。当前,它们在显示时按自然顺序排序 我想在播放列表中输入一个曲目位置字段 对于meteor mongo db中的集合,最好的实现方法是什么 这是我的歌曲收藏的当前模式Javascript 如何将位置字段应用于Meteor mongo中的集合?,javascript,mongodb,meteor,Javascript,Mongodb,Meteor,我的用例 我有一个在线音乐播放器的播放列表。当前,它们在显示时按自然顺序排序 我想在播放列表中输入一个曲目位置字段 对于meteor mongo db中的集合,最好的实现方法是什么 这是我的歌曲收藏的当前模式 //Schema for Songs Schema.Songs = new SimpleSchema({ trackId: { type: String, label: "Track ID", optional:
//Schema for Songs
Schema.Songs = new SimpleSchema({
trackId: {
type: String,
label: "Track ID",
optional: false
},
title: {
type: String,
label: "Name",
optional: false
},
duration:{
type: Number,
label: "Duration",
optional: false
},
festivalId: {
type: SimpleSchema.RegEx.Id,
optional: false
}
});
我想能够重新排序的歌曲,例如在位置3歌曲。我想将其移动到位置1,然后所有其他歌曲的位置字段将相应更新
什么是一个很好的起点?想到的最简单的方法是创建一个名为
playlist
的集合,作为一个名为歌曲
的字段。歌曲
字段将是一个字符串数组。这些将是歌曲的ID
Schema.Playlist = new SimpleSchema({
'songs.$': {
type: String,
}
})
然后,您可以创建一个帮助器来列出所有歌曲
。让我们称之为showPlaylist
。它将歌曲
字段中的ID解析为其透视文档。我会使showPlaylist
返回的数组成为被动数组。那会帮你节省一些工作
{{ #each showPlaylist }}
<audio id="{{ _id }}" class="song" src="{{ src }}"></audio>
{{ /each }}
到
function updatePlaylistOrder (oldPos, newPos, id) {
var newList = moveElement(Playlists.findOne(id), oldPos, newPos)
Playlists.update(playlistId, {$set: {songs: newList}})
return newList
}