MCh*_*han 3 mongoose mongodb node.js
我有以下架构,我试图在我的博客帖子架构中添加一个注释数组,然后在注释架构中我需要添加与每个特定注释相关的图片网址数组.我研究了网络,发现这个链接嵌入文档到mongoose文档,但发现它与mongoose版本2.7相关,而我们目前的版本是3.8.所以我想知道我做得对吗?如果没有,有人可以通过建议设计我的博客帖子架构的最佳方式来帮助我,以便它包括博客文章评论数组以及与每个相关的图片数组评论.感谢您的时间和精力.
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var pictures = new Schema({
picURL: String,
date: {
type: Date,
default: Date.now
}
});
var comments = new Schema({
subject: String,
body: String,
date: {
type: Date,
default: Date.now
},
pictures:[pictures]
});
var blogpost = new Schema({
title: String,
body: String,
date: {
type: Date,
default: Date.now
},
comments:[comments]
});
module.exports = mongoose.model('BlogPost', blogpost);
Run Code Online (Sandbox Code Playgroud)
这里有两个常见的场景,您希望如何处理您的信息
嵌入式文件:
如果你有可能做更多的读取而不是写入,建议在这种情况下遵循这种方法,你的模型可能是这样的:
var comments = new Schema({
subject: String,
body: String,
date: {
type: Date,
default: Date.now
},
pictures:[{
picURL: String,
date: {
type: Date,
default: Date.now
}
}]
});
Run Code Online (Sandbox Code Playgroud)
而你对我的态度还可以,应该在没有潜在问题的情况下运行3.8.
参考文件:
如果你有更多的写入而不是读取,你可以使用不同的集合来分割信息并引用你的objectId,如:
var comments = new Schema({
subject: String,
body: String,
date: {
type: Date,
default: Date.now
},
pictures: [
{type: Schema.Types.ObjectId, ref: 'pictures'}
]
});
Run Code Online (Sandbox Code Playgroud)
您需要将每个模式分离为自己的模式,并为评论和图像设置模型.
无论哪种方式都有效,如果你问我个人偏好是采用嵌入式文档方法.
编辑:
这种情况可以应用于集合之间的N个关系,我保持两个关系的简单,但对于你来说,情况可能是这样的:
var blogpost = new Schema({
title: String,
body: String,
date: {
type: Date,
default: Date.now
},
comments: [{
subject: String,
body: String,
date: {
type: Date,
default: Date.now
},
pictures:[{
picURL: String,
date: {
type: Date,
default: Date.now
}
}]
}]
});
Run Code Online (Sandbox Code Playgroud)
引用:
var blogpost = new Schema({
title: String,
body: String,
date: {
type: Date,
default: Date.now
},
comments:type: Schema.Types.ObjectId, ref: 'comments'}
});
Run Code Online (Sandbox Code Playgroud)
希望有所帮助.
| 归档时间: |
|
| 查看次数: |
2928 次 |
| 最近记录: |