首页 > 解决方案 > 嵌套文档上的猫鼬杂物

问题描述

我是 mongodb 的初学者,我希望收到您关于采用最佳实践的建议。

我正在创建一个简单的博客开始,我的猫鼬模式是这样的

博客

const Blog = new Schema({
    title : String,
    description : String,
    pictures: Schema.Types.Mixed
});

图片

const picture = new Schema({
    images : Array
});

图像架构将仅包含 url,图像将存储在 cloudinary 上。

我分成两个模式以免重复逻辑,因为我还可以添加一个包含个人资料照片的用户图(图片模式)

我主要关心的是如何为用户和博客模式执行 crud 操作,因为它们有一个子文档图片,它是一个字符串,但必须使用 multer、cloudinary 和 fs 实现上传。我是否必须提出两个请求才能分开创建文档及其子文档?

你的帮助对我来说很宝贵

标签: node.jsmongodbexpressmongoosemongoose-schema

解决方案


你不应该制作这样的模式。与博客相关的所有内容都应该在其架构中,因此如果图像是博客的一部分,那么只需将其添加到博客的架构中:

const Blog = new Schema({
    title : String,
    description : String,
    images: Array
});

然后这个 images 数组可以有这个博客的图片的 url。对于用户部分,您应该为具有该用户的用户名、密码等和个人资料图片的用户创建另一个模式。通过这种方式,事情更有条理和可读性,而不是重复逻辑并不意味着你应该让它变得如此模块化以至于它变得混乱。保持简单 博客架构中与博客相关的所有内容 用户架构中的用户的所有内容,依此类推。


推荐阅读