Я пытаюсь создать простой блог, где есть посты и категории. В настоящее время статьи могут быть добавлены в родительскую категорию (в будущем они могут быть добавлены в несколько категорий). В категории есть много статей. Вот что я придумал:
Category.js
const CategorySchema = new Schema({
name: {
type: String,
required: true,
trim: true
},
user: { // I wanted to know what user created the category
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
}
},
{
timestamps: true
});
const Category = mongoose.model('categories', CategorySchema);
module.exports = Category;
Article.js
const ArticleSchema = new Schema({
name: {
type: String,
required: true,
trim: true
},
article_body: {
type: String,
trim: true
},
userId: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
},
categoryId: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Category'
}
},
{
timestamps: true
});
const Article = mongoose.model('articles', ArticleSchema);
module.exports = Article;
Когда я пытаюсь загрузить статьи с именами / подробностями их категорий:
Article.find({}).populate('categoryId').sort('name').exec(function(err, articles) {
if(err) throw err;
res.send(JSON.stringify(articles));
});
Я получаю эту ошибку:
MissingSchemaError: Schema hasn't been registered for model "Category".
Use mongoose.model(name, schema)
Я новичок в NoSQL, поэтому я даже не уверен, подходит ли эта структура модели для моего случая (если бы не было лучше использовать вложенный / вложенный документ). Данные (статьи) будут прочитаны посетителями, и посетители смогут фильтровать статьи по категориям.