У меня относительно простой вопрос, но я снова и снова застреваю. Я думаю, что это четвертый раз, когда я пытаюсь реструктурировать свои документы, чтобы попытаться получить желаемый результат.
Я хочу создать базу данных в мангусте со следующей структурой:
У пользователя много групп, сообщений и комментариев. Все группы, сообщения и комментарии принадлежат пользователю. Сообщение может принадлежать множеству групп или ни одной. И комментарий принадлежит определенному сообщению.
Вот что у меня есть на данный момент:
UserSchema
var userSchema = mongoose.Schema({
local : {
email : String,
password : String,
username : String,
created: {type:Date, default: Date.now}
}
});
PostSchema
var PostSchema = new Schema({
url: String,
highlighted: String,
comment: String,
image: String,
timeStamp: String,
description: String,
title: String,
created: {type:Date, default: Date.now},
private: Boolean,
favorite: Boolean,
readlater: Boolean,
postedBy: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
},
comments: [{
text: String,
postedBy: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
}
}],
groups: [{
name: String,
postedBy: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
}
}]
});
groupSchema
var GroupSchema = Schema({
name : String,
created: {type:Date, default: Date.now},
postedBy: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
}
});
Хотя я могу ошибаться в этом предположении, я думаю, что у меня есть сообщение для пользователя и комментарий, чтобы опубликовать отношения такими, какими они должны быть. Пожалуйста, поправьте меня, если я ошибаюсь. Основная проблема, с которой я сейчас сталкиваюсь, - это то, что моя группа публикует сообщения об отношениях. В настоящее время отношений нет вообще. Насколько я могу, это почти как если бы группа принадлежит посту, а не наоборот. Единственный другой способ структурировать группу, который я могу придумать, - это так:
var GroupSchema = Schema({
name : String,
created: {type:Date, default: Date.now},
postedBy: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
},
posts: [{
title: String,
Url: String,
comments: [{
text: String
}]
etc....
}]
});
Единственная проблема, которую я вижу в приведенной выше структуре, заключается в том, что сообщение должно быть частью группы, которую я хочу сделать необязательной. Так что, насколько я могу судить, это тоже не сработает.
Если вы можете дать какой-либо совет относительно того, как это должно быть структурировано, это мне очень поможет.
Заранее спасибо.