【问题标题】:Mongoose for product system with different attributes depending on product typeMongoose 用于根据产品类型具有不同属性的产品系统
【发布时间】:2012-05-31 01:52:48
【问题描述】:

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

我正在阅读教程,起初我为 ProductModel 编写一个提供程序而迷失了方向,但后来有人建议我应该使用 Mongoose。

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

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

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

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

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

    ProductSchema = new Schema({any: {}});

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

    我的建议是在 node-mongodb-native 上使用您自己的包装器,我在生产环境中运行了 7 到 8 个月没有问题。

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

    【讨论】:

    • 感谢您的回答。然而,Mongoose Schemas 似乎并不严格,除非你告诉他们严格。当您使用 Mongoose.model 时,您显然可以定义要使用的集合。将其与继承相结合,我认为我拥有我正在寻找的东西。
    猜你喜欢
    • 1970-01-01
    • 2016-04-01
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多