我试图弄清楚呈现Mongoose模式的两种情况之间的区别。我正在寻找一个帖子,用户可以在该帖子下发表评论。在一种情况下,在情况1中,我的Comment模式与(主)Post模式在同一文件中,如下所示,在情况1中,而在另一种情况中,涉及到各个(Comment和Post)模式的单独文件,在案例2中可见。Post模式中适当引用了Comment模式。
最初,我使用第一种方法/案例创建并保存了一篇文章(然后添加了一些虚拟评论)。之后,在分离了两个模式之后,我无法向数据库添加注释或从数据库获取注释。那么,有什么用呢?我对此没有足够的知识,因此不胜感激。
我希望我对困境的描述足够简洁。
以下是相关的代码段。
案例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;