我正在创建一个显示新音乐的应用程序。在登录页面上,将有一个部分显示最近上传的音乐。当用户单击歌曲时,它将带他们到显示模板,该模板将显示艺术家名称,标题,视频,描述和艺术家社交媒体。
我还希望有一个部分显示该歌曲中包含的所有歌手。当用户单击歌手姓名时,它将呈现一个包含该歌手所有歌曲的页面。所以我在创建模式时遇到问题,因为一首歌可以有多个艺术家。
我的旧架构旨在从表单中获取输入并显示它,而与艺术家没有任何关系。
使用新的架构,我试图在艺术家和歌曲之间建立关系。
旧模式
const mongoose = require("mongoose");
artistSchema = new mongoose.Schema({
name: String,
title: String,
image: String,
content: String,
description: String,
category: String,
soundcloud: String,
scName: String,
instagram: String,
igName: String,
twitter: String,
twName: String
});
module.exports = mongoose.model("Artist", artistSchema);
新模式
const mongoose = require("mongoose");
artistSchema = new mongoose.Schema({
name: String,
social: schema.ObjectId,
music: schema.ObjectId
});
module.exports = mongoose.model("Artist", artistSchema);
const mongoose = require("mongoose");
socialSchema = new mongoose.Schema({
soundcloud: String,
scName: String,
instagram: String,
igName: String,
twitter: String,
twName: String
});
module.exports = mongoose.model("Social", socialSchema);
const mongoose = require("mongoose");
musicSchema = new mongoose.Schema({
title: String,
image: String,
content: String,
description: String,
category: String
});
module.exports = mongoose.model("Music", musicSchema);
环顾了一会后,我发现了一些与我想做的事情有关的文档。 https://gist.github.com/fwielstra/1025038
所以我的问题是,如果我的架构设置正确,并且如果继续遵循Github文档,是否会遇到任何问题。
答案 0 :(得分:0)
探讨一对多关系。一首歌涉及很多艺术家。
const mongoose = require("mongoose");
musicSchema = new mongoose.Schema({
title: String,
image: String,
content: String,
description: String,
category: String,
artists: [
{
type: Schema.Types.ObjectId,
ref: "Users"
}
]
});
module.exports = mongoose.model("Music", musicSchema);
voters: [
{
type: Schema.Types.ObjectId,
ref: "someModel[artists model]"
}
]