Mongoose用于具有不同属性的产品系统,具体取决于产品类型

时间:2012-05-04 20:14:07

标签: node.js mongodb mongoose

我正在构建一个小型产品系统,试图让我进入Node.js,Mongo等。 我被Mongo吸引到了将不同类型的产品存储在同一个集合中的可能性,而不是有多个表,eav或任何其他不太合适的MySQL方法。

我正在阅读教程,最初没有为ProductModel编写提供程序,但后来有人建议我应该使用Mongoose。

然而,Mongoose的问题似乎是我需要为每个模型设置一个模式。我的第一个想法是产品应该具有titletype属性。然后type将决定整体产品结构。例如,dvd产品可能有导演,而t-shirt产品没有导演但会有不同的尺寸。

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

感谢任何帮助和指导,希望能够使用框架而不是自己编写数据库处理(尽管我最初计划做什么,但如果其他人已经比我做得更好:))

1 个答案:

答案 0 :(得分:0)

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

ProductSchema =新架构({any:{}});

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

我的建议是在node-mongodb-native上使用你自己的包装器,我正在生产7到8个月没有问题。

还有另一个名为mongous的lib,您可以查看它。