Я пытаюсь выяснить разницу между двумя ситуациями, в которых можно представить схемы Mongoose. Я ищу создать пост, под которым пользователи могут оставлять комментарии. В одном случае у меня есть схема Comment в том же файле, что и схема (основная) Post, как показано ниже, в случае 1, тогда как в другом случае используются отдельные файлы для соответствующих схем (Comment и Post), как видно в случае 2 Схема комментариев должным образом упоминается в схеме Post.
Первоначально я создал и сохранил сообщение (затем добавил пару фиктивных комментариев), используя первый метод / случай. Впоследствии, после разделения двух схем, я не смог добавить / получить комментарии в / из базы данных. Итак, что дает? Я не обладаю величайшими знаниями в этом отношении, поэтому буду очень признателен за объяснение.
Надеюсь, я был достаточно лаконичен в описании своего затруднительного положения.
Вот соответствующие фрагменты кода.
Случай 1: схемы комментирования и публикации в одном файле
import mongoose from 'mongoose';
const Schema = mongoose.Schema;
const CommentSchema = new Schema({
body: { type: String },
addedBy: { type: Schema.Types.ObjectId, ref: 'User' },
});
const PostSchema = new Schema({
//...
comments: [CommentSchema],
//...
},
{
timestamps: true,
},
);
const Post = mongoose.model('Post', PostSchema);
export default Post;
Случай 2: схемы комментирования и публикации в отдельных файлах
//comment.js
import mongoose from 'mongoose';
const Schema = mongoose.Schema;
const CommentSchema = new Schema({
body: { type: String },
addedBy: { type: Schema.Types.ObjectId, ref: 'User' },
});
const Comment = mongoose.model('Comment', CommentSchema);
export default Comment;
/******************************************************/
//post.js
import mongoose from 'mongoose';
const Schema = mongoose.Schema;
const PostSchema = new Schema({
//...
comments: [{ type: Schema.Types.ObjectId, ref: 'Comment' }],
//...
},
{
timestamps: true,
},
);
const Post = mongoose.model('Post', PostSchema);
export default Post;