这两个猫鼬模式表示之间有什么区别?

时间:2018-09-02 19:38:03

标签: javascript node.js mongodb mongoose

我试图弄清楚呈现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;

0 个答案:

没有答案