Я настраиваю сайт, на котором будут пользователи. Пользователи могут искать песни и (если они вошли в систему) сохранять их в плейлист или в свою библиотеку песен.
Я хочу, чтобы это было похоже на iTunes, так как все песни в плейлистах являются частью библиотеки, поэтому, когда пользователь выбирает просмотр своей библиотеки песен, отображаются песни в плейлистах и только что добавленные песни. В библиотеку. Мне бы хотелось, чтобы песню можно было хранить в нескольких плейлистах.
Сейчас я использую Mongodb, что-то вроде этого:
var UserSchema = new Schema();
var Library = new Schema({
songs: [SongsSchema],
user: Schema.ObjectId
});
var Playlist = new Schema({
title: String,
description: String,
user: Schema.ObjectId
});
var SongsSchema = new Schema({
position: Number,
name: String,
artist: String,
artistGid: String,
album: String,
albumGid: String
time: Number,
url: String,
gid: String,
location: String (either youtube, vimeo, soundcloud for now),
playlist: [Schema.ObjectId] (array of object ids that point to playlists?)
});
Это кажется лучшим? Я привык к реляционному взаимодействию, поэтому кажется, что есть много дубликатов, но мне было трудно его нормализовать так, чтобы это работало.