猫鼬验证错误:无效的架构配置

时间:2019-05-29 07:36:39

标签: node.js validation mongoose mongoose-schema

尝试通过嵌入文档来建立馆藏之间的关系模型 但是在模式中进行验证并将“ required”设置为True时,就会出现err

一旦我解决了电影模式中的流派对象所需的问题,便会对此进行评论 但我要验证

const Movie = mongoose.model(
  'Movies',
  new mongoose.Schema({
    title: {
      type: String,
      required: true,
      trim: true,
      minlength: 1,
      maxlength: 255
    },
    numberInStock: {
      type: Number,
      required: true,
      min: 0,
      max: 255
    },
    dailyRentalRate: {
      type: Number,
      required: true,
      min: 0,
      max: 255
    },
    genre: genreSchema
    required: true
  })
);

const genreSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true,
    minlength: 5,
    maxlength: 50
  }
});

TypeError:无效的架构配置:True在路径required处不是有效类型

5 个答案:

答案 0 :(得分:0)

尝试在true旁边给出消息。 例如->必填:[true,“ Title required”]

答案 1 :(得分:0)

您可以在提取

时使用引用并使用填充
genre: [{
        type: mongoose.Schema.Types.ObjectId,
        ref: 'genreSchema',
        required: true
    }],

参考:Model Referenced one to Many Relationship between documents 进行更好的架构设计

答案 2 :(得分:0)

请共享完整代码。

也许主要原因是您没有使用

const Movie = mongoose.model(
  'Movies',
  new mongoose.Schema({
    title: {
      type: String,
      required: true,
      trim: true,
      minlength: 1,
      maxlength: 255
    },
    numberInStock: {
      type: Number,
      required: true,
      min: 0,
      max: 255
    },
    dailyRentalRate: {
      type: Number,
      required: true,
      min: 0,
      max: 255
    },
    genre: {
        ref: 'SchemaName',
        required: true
    },
  })
);

您可以这样做。

答案 3 :(得分:0)

将流派模型导出为 exports.genreSchema = genreSchema

然后在movies.js文件中将模型导入为 import { genreSchema } from './genre.model'

尝试执行此操作将不会出现错误。

答案 4 :(得分:0)

删除required: true,然后从官方docs中删除。注意所用猫鼬的版本。 我遇到了同样的错误并解决了。我的错误是使子文档成为模型,而不是将其保留为模式

const childSchema = new Schema({ name: 'string' });

const parentSchema = new Schema({
  // Array of subdocuments
  children: [childSchema],
  // Single nested subdocuments. Caveat: single nested subdocs only work
  // in mongoose >= 4.2.0
  child: childSchema
});