【问题标题】:Why does Mongoose requires schema when Mongodb itself doesn't have a schema?当 Mongodb 本身没有架构时,为什么 Mongoose 需要架构?
【发布时间】:2017-11-23 06:00:01
【问题描述】:

我想创建一个产品表,其中包含所有家用电器(如冰箱、冷风机、电视等)的信息。我已经创建了这样的模式。

var productSchema = mongooseDB.Schema({
    Brand: {type: String, required: true},
    categoryId: Number,
    Color: String,
    Type: String,
    Price: Number,
    Size: Number
});

但问题是每种产品都有不同的属性。所以我想不出任何通用模式。我该怎么办?或者我应该为每个特定产品创建一个单独的表?

【问题讨论】:

    标签: node.js mongodb mongoose database


    【解决方案1】:

    您可以使用鉴别器在猫鼬中获得多态行为。看看我对这个问题的回答: How to use mongoose schema when you have dynamic values?

    【讨论】:

      【解决方案2】:

      如果 Mongoose 不能满足您的需求,您完全不必使用它。 您可以在您的应用程序中使用native MongoDB driver。

      或者我猜你可以将 Mongoose 与空架构一起使用,并将strict 选项指定为false。
      http://mongoosejs.com/docs/guide.html#strict

      【讨论】:

        【解决方案3】:

        我相信您想在定义架构时将选项 strict 设置为 false。您可能应该有一些通用字段来识别它是什么类型的产品。也看看discriminators——可能有用。

        但请注意注意事项:除非你有充分的理由,否则不要设置为 false。

        关于 mongoose 使用模式的原因,answer 解释得很好。

        【讨论】:

          猜你喜欢
          • 2016-02-29
          • 2016-02-28
          • 2015-04-22
          • 2014-02-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-25
          • 1970-01-01
          相关资源
          最近更新 更多