当使用Mongoose时,我对MongoDB中的某些东西感到有些困惑,因为我是新手。我有两个集合:作者和帖子。
authors集合中的每个作者都有与它们相关联的mongodb内置id,根据我的理解,它是schematype / datatype Objectid
。
现在在我的帖子集合中,我有一个名为author
的字段,它应该具有作者Objectid
的值,类似于SQL中的外键概念。
我的问题是,我应该在posts集合中声明作者字段的schematype / datatype?我应该把它作为Objectid
吗?如果是这样,它会不会自动递增而不能设置吗?
模式的样机:
var authors = new mongoose.Schema({
name: String,
email: String
});
var posts = new mongoose.Schema({
title: String,
author: **??**
});
非常感谢任何帮助!
答案 0 :(得分:1)
您可以使用population:
var authors = new mongoose.Schema({
name: String,
email: String
});
var posts = new mongoose.Schema({
title: String,
author: { type: Schema.Types.ObjectId, ref: 'Author' }
// assuming the model will be called 'Author'
});
使用:
// Get 'author' some how (create a new one, query the
// database for existing authors, etc);
...
// Create a new post and associate it with 'author' by referencing its `_id`:
var post = new Post({
...
author : author._id
});
post.save(...);
上面链接的文档还说明了在查询帖子时如何让Mongoose自动检索author
文档。