应该如何为具有不同字段的几个猫鼬模型创建模式?

Posted

技术标签:

【中文标题】应该如何为具有不同字段的几个猫鼬模型创建模式?【英文标题】:how should create schemas for several mongoose models with different fields? 【发布时间】:2021-08-14 05:04:31 【问题描述】:

假设我们要建立一个包含不同产品的电子商务网站,例如这些产品分为四五个类别。每个类别的产品都有自己的字段,当然它们之间还有一系列共同的字段,例如产品名称、价格、描述和... 我的问题是,我们应该为每种产品定义四个还是五个不同的模式?

【问题讨论】:

【参考方案1】:

我确实认为您应该为每个产品类别创建一个架构,即使它们可能共享一些相似的字段。

您可以为相似的字段创建一个对象并将它们插入到模式中,如果这有助于您不必重复自己的话。

如果一个 Schema 拥有所有产品所需的所有字段,那就太臃肿了。而且每个类别也有不同的模型也没有意义。当您查询产品时,它会返回许多与产品无关的字段。

【讨论】:

那么我应该如何实现添加到购物车部分?在用户模型中,我添加了一个购物车字段,如下所示:。 . . cart: items: [ productId: type: Schema.Types.ObjectId, ref: 'Product', required: true , quantity: type: Number, required: true ] 并根据你所说的,我应该在“ref”而不是“product”中输入什么??? 我可以使用 refs 数组吗? 我看到了你的困境。在这种情况下,您将有不同的模式来存储和列出您的产品。还有一个单独的产品订单模式来存储添加到购物车的产品订单 - 这将是您的购物车模型的参考。原因是当您将产品添加到购物车时,您需要的产品字段现在应该相似,例如“qtyOrdered”、“totalPrice”、“unitPrice”。如果您愿意,您仍应参考单个产品类别。

以上是关于应该如何为具有不同字段的几个猫鼬模型创建模式?的主要内容,如果未能解决你的问题,请参考以下文章

关于如何在猫鼬中编写评论模式的任何想法?

如何为不同的数据源实现数据映射器/存储库持久性模式?

如何为滑块(sliderInput)着色?

如何为具有不同公式的多个 glm 调用仅加载一次数据?

如何为不同的请求方法创建具有不同参数编码的 AFHttpClient?

Plotly:如何为每个变量创建具有不同样式和颜色的线图?