【问题标题】:Mongoose Schema: object with any property name possible?Mongoose Schema:具有任何属性名称的对象?
【发布时间】:2017-06-29 09:00:38
【问题描述】:

我想定义一个 Mongoose Schema,它接受与 String 相关的任何属性名称作为其值。我正在寻找类似于以下内容(无需先写任何可能的属性名称):

var schema = new Schema({
     name: String,
     someStrings: {
          string1: String,
          string2: String,
          ...
          stringN: String
     } 
});

我知道我可以简单地使用Schema.Types.Mixed,但这样就可以在内部使用数组或其他类型。此外,Mongoose 会失去自动检测和保存此属性更改的能力。

var schema = new Schema({
     name: String,
     someStrings: Schema.Types.Mixed    
});

我只想拥有一个对象 (someString),它只包含任意数量的名称到值 String 的任何名称的映射。

在 mongoose 中也有可能发生这样的事情吗?

【问题讨论】:

  • 您是否考虑过像someStrings: [{name: String, value: String}] 这样的架构?其中元素中的name 值为string1string2 等。
  • 是的,我想过这一点,但我想避免使用数组,以便通过简单地调用:obj.string1obj.stringN 来获取值而无需每次都更轻松地访问属性必须遍历数组。
  • 那么我想你必须使用Mixed

标签: node.js mongodb


【解决方案1】:

var schema = new Schema({
  name: String,
  strings: {
    type: Object,
    default: {
      string1: String,
      string2: String,
      ...
      stringN: String
    }
  }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    • 2015-08-05
    相关资源
    最近更新 更多