具有必需字段的嵌套可选对象的Mongoose Schema

Víc*_*aiz 6 mongoose mongodb node.js

我想创建一个Mongoose Schema来验证下面的对象,但有以下限制:

  • field2是可选的(0-1关系),
  • 如果field2存在,则需要field2.type(注意字段的名称是"type"作为类型定义的mongoose保留字),
  • field2和基础对象必须位于同一文档中.

代码示例

{
  field1: "data",
  field2: {
    type: "data",
    data: "data"
  }
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

uda*_*day 8

@Mina Michael 的回答对我不起作用,但是,当我稍微调整一下时,它对我有用。我是这样试的:

{
  field1: String,
  field2:{
    type: new Schema({
      nestedField1: {type:Boolean,required:true},
      nestedField2: String,
    }),
    required: false
  }
}
Run Code Online (Sandbox Code Playgroud)


Min*_*ael 7

您可以参考以下答案

{
  field1: "your data",
  field2:
  {
    type:
    {
      "your data"
    },
    required:false
  }
}
Run Code Online (Sandbox Code Playgroud)

因此,一个例子是:

{
  field1: String,
  field2:
  {
    type:
    {
      nestedField1:{type:String,required:true},
      nestedField2:String
    },
    required:false
  }
}
Run Code Online (Sandbox Code Playgroud)

如果field2存在,则需要nestedField1。


Ami*_*mir 0

你的意思可能是这样的:

var Field2Schema = new mongoose.Schema({
  type: { type: String, required: true },
  data: String
});

var MainSchema = new mongoose.Schema({
  field1: String,
  field2: Field2Schema
});
Run Code Online (Sandbox Code Playgroud)