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
我正在使用 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