重复使用同一字段时出现架构错误

Schema error when reusing same field

我有两个使用相同字段的独立模式。我试图创建 schemaComponents,以便我可以在一个位置更新两个模式,但是我收到错误 Error: Invalid definition for school.$ field。当我使用它时。我不确定我在这里做错了什么,我的印象是这是允许的。

路径:SchemaComponents.js

SchemaComponents = {
  schools: {
    type: [String],
    optional: true,
    autoform: {
      options: [
        {label: "School One", value: 'SchoolOne'},
        {label: "School Two", value: 'SchoolTwo'},
        {label: "School Three", value: 'SchoolThree'},
      ]
    }
  }
};

路径:StudentSchema.js

import from '../components/SchemaComponents.js';
StudentSchema = new Mongo.Collection("studentSchema");

var Schemas = {};

Schemas.StudentSchema = new SimpleSchema({
    school: SchemaComponents.schools,
});

StudentSchema.attachSchema(Schemas.StudentSchema);

路径:TeacherSchema.js

import from '../components/SchemaComponents.js';
TeacherSchema = new Mongo.Collection("teacherSchema");

var Schemas = {};

Schemas.TeacherSchema = new SimpleSchema({
    school: SchemaComponents.schools,
});

TeacherSchema.attachSchema(Schemas.TeacherSchema);

您将 SchemaComponent 定义为简单的 object 而不是 SimpleSchema 对象。要重复使用您的 schools 定义,请执行以下操作:

let schoolsSchema = new SimpleSchema({
  schools: {
    type: [String],
    optional: true,
    autoform: {
      options: [
        {label: "School One", value: 'SchoolOne'},
        {label: "School Two", value: 'SchoolTwo'},
        {label: "School Three", value: 'SchoolThree'},
      ]
    }
  }
});

那么你可以这样做:

Schemas.TeacherSchema = new SimpleSchema({
  school: {
    type: schoolsSchema
  }
});