SimpleSchema 无效键“需要 _id”

SimpleSchema invalid keys "_id required"

我正在使用 aldeed:autoform、aldeed:simple-schema、aldeed:collection2 和 mdg:validated-方法对集合进行插入。

这是带有 AutoForm 的模板:

<template name="Areas_agregar">
  {{> Titulos_modulos title="Areas" subtitle="Agregar" cerrar=true}} 
  {{ 
    #autoForm 
    collection=areasColecction 
    id="areas_agregar" 
    type="method" 
    meteormethod="areas.insert" 
  }} 
  {{> afQuickField name='nombre'}} 
  {{> afArrayField name='subareas'}}

  <button type="submit">Save</button>

  <button type="reset">Reset Form</button>
  {{/autoForm}}
</template>

这是集合的架构:

Areas.schema = new SimpleSchema({
    _id: { 
        type: String, 
        regEx: SimpleSchema.RegEx.Id 
    },
    nombre: { 
        type: String,
        label: 'Nombre'
    },
    subareas: {
        type: [String],
        label: 'Subareas'
    }
});

这是插入方法:

const AREA_FIELDS_ONLY = Areas.simpleSchema().pick(['nombre', 'subareas', 'subareas.$']).validator({ clean: true, filter: false });

export const insert = new ValidatedMethod({
    name: 'areas.insert',
    validate: AREA_FIELDS_ONLY,
    run({ nombre, subareas }) {
        const area = {
            nombre, 
            subareas
        };
        Areas.insert(area);
    },
});

我在 Chrome 的开发控制台中收到以下错误:

"areas_agregar" 上下文的 SimpleSchema 无效键: 阵列[1] 0:对象 姓名:“_id” 输入:"required" 值:空 原型:对象 长度:1 原型:数组[0]

如错误所示,正在询问 _id 字段的值,但我正在进行插入更新,这没有任何意义。

知道可能出了什么问题吗?

autoform 将模式中的必需键视为表单输入中的必需键,这不适用于 _id 键。

如果您将 _id 设为可选:true 那么您的插入将起作用并且 Meteor 将自动插入 _id 或者您可以使用省略 _id 键的自动表单模式的变体一共:

let schemaObject = {
  nombre: { 
    type: String,
    label: 'Nombre'
  },
  subareas: {
    type: [String],
    label: 'Subareas'
  }
};
Areas.formSchema = new SimpleSchema(schemaObject); // use for form
schemaObject._id = { 
  type: String, 
  regEx: SimpleSchema.RegEx.Id 
};
Areas.collectionSchema = new SimpleSchema(schemaObject); // use for collection