Node.js 产品系统的Mongoose,根据产品类型具有不同的属性

Node.js 产品系统的Mongoose,根据产品类型具有不同的属性,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我正在构建一个小的产品系统,尝试进入Node.js、Mongo等。 我被Mongo吸引是因为它可以将不同类型的产品存储在同一个集合中,而不是使用多个表、eav或任何其他不太适合的MySQL方法 我正在阅读教程,起初我想为ProductModel编写一个提供者,但后来有人建议我应该使用Mongoose 然而,Mongoose的问题似乎是,我需要为每个模型设置一个模式集。我的第一个想法是产品应该有标题和类型属性。然后,类型将决定整个产品结构。例如,一个dvd产品可能有一个控制器,而一件t-shirt

我正在构建一个小的产品系统,尝试进入Node.js、Mongo等。 我被Mongo吸引是因为它可以将不同类型的产品存储在同一个集合中,而不是使用多个表、eav或任何其他不太适合的MySQL方法

我正在阅读教程,起初我想为ProductModel编写一个提供者,但后来有人建议我应该使用Mongoose

然而,Mongoose的问题似乎是,我需要为每个模型设置一个模式集。我的第一个想法是产品应该有
标题
类型
属性。然后,
类型
将决定整个产品结构。例如,一个
dvd
产品可能有一个控制器,而一件
t-shirt
产品可能没有控制器,但尺寸不同

是否有可能在猫鼬中实现这种结构,以及如何实现?我的理解是,如果我为每种产品类型提供一个模式,我将无法同时查询它们?不同的模式是否意味着不同的集合我不太明白


感谢任何帮助和指导,我希望能够使用框架而不是自己编写DB处理(虽然这是我最初计划做的,但如果其他人allready做得比我好:)

Mongoose有一个无模式类型,在您的情况下可能非常有用,但可能不是最佳解决方案

ProductSchema=新模式({any:{}})

如果您对此对象进行了任何更改,则需要在保存之前使用obj.markModified('field-name')通知Mongoose

我的建议是使用你自己的包装,我在生产上运行了7~8个月,没有问题


另一个lib称为,您可以查看它。

Mongoose有一个无模式类型,它在您的情况下非常有用,但可能不是最好的解决方案

ProductSchema=新模式({any:{}})

如果您对此对象进行了任何更改,则需要在保存之前使用obj.markModified('field-name')通知Mongoose

我的建议是使用你自己的包装,我在生产上运行了7~8个月,没有问题


还有另一个lib,您可以查看。

谢谢您的回答。然而,似乎猫鼬模式并不严格,除非你告诉它们严格。当您使用Mongoose.model时,您显然可以定义它将用于什么集合。再加上继承,我想我找到了我想要的。谢谢你的回答。然而,似乎猫鼬模式并不严格,除非你告诉它们严格。当您使用Mongoose.model时,您显然可以定义它将用于什么集合。再加上继承,我想我找到了我想要的。