如何制作一个包含猫鼬所需不同字段的数组?

Posted

技术标签:

【中文标题】如何制作一个包含猫鼬所需不同字段的数组?【英文标题】:How can I make an array with different fields required in mongoose? 【发布时间】:2019-10-27 22:33:35 【问题描述】:

我正在创建一个 RESTAPI,但是在编译 npm 时会抛出一条错误消息,说明

架构配置无效

我曾尝试在官方文档以及 *** 上寻找解决方案,但他们都没有回答我的问题。

const TeacherSchema = new Schema(

   WorkExperience:[
              startDate:String,
              endDate:String,
              companyName:String,
              postName:String,
              required:true
        ],
);

代码应该可以编译,但它抛出了一个错误

【问题讨论】:

此架构似乎无效,因为它将 required: true 声明为数组中的一个字段 - 但是您提供 true 作为值而不是架构类型。看看这个post,它应该会告诉你如何解决你的问题。 正如@StockOverflaw 评论的那样,您的错误是将required 定义为数组对象的第五个字段,而不是每个字段的属性(或必需的)。无论如何,请记住,根据需要定义字段只会影响在数组中插入对象时,但可以插入数组中没有项目的文档。 您可以阅读this以获得更清晰的了解 【参考方案1】:

您还可以为每个字段添加要求。我认为没有办法根据数组的需要添加验证。

const workExperienceDetails = new Schema(
  startDate:  type: String, required: true ,
  endDate:  type: String, required: true 
  companyName:  type: String, required: true 
  postName:  type: String, required: true 
);
const TeacherSchema = new Schema(
   workExperience:[workExperienceDetails],
);

【讨论】:

感谢您提供的答案,我试图寻找解决方案,但在父架构中定义架构时是否有任何问题

以上是关于如何制作一个包含猫鼬所需不同字段的数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何在猫鼬中执行“每个”查询

如何填充数组内的对象和猫鼬中的另一个数组中的所有用户字段

如何让猫鼬将一组 url 推送到数组子文档

如何在猫鼬中将对象字段作为数组获取?

如何仅在猫鼬中使用聚合填充嵌套在对象数组中的字段?

在猫鼬中仅更改整个嵌入式文档数组的一个字段