在批量插入期间有条件地抑制 SimpleSchema 的字段验证
conditionally suppress field validation for SimpleSchema during Bulk Insert
我正在使用 Meteor 1.5 和 MongoDB 3.2
我正在使用下面的简单模式插入客户集合。
import { Mongo } from 'meteor/mongo';
import SimpleSchema from 'simpl-schema';
SimpleSchema.extendOptions(['autoform']);
export const Clients = new Mongo.Collection('Clients');
ClientsSchema = new SimpleSchema({
"gstNo": {
type: String,
label: "GST No.",
regEx: /^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z]{1}[1-9A-Z]{1}Z[0-9A-Z]{1}$/,
optional: true,
},
"mobile": {
type: String,
label: "Mobile 1",
regEx: /^[789]\d{9}$/,
}
});
Clients.attachSchema( ClientsSchema );
使用 Aldeed 的 AutoForm 6.0 的简单 QuickForm 效果很好。
问题场景:
我执行批量插入,因为我有计数为 3000 的客户。我解析 "valid" excel sheet 然后使用循环我尝试插入数据,但是当正则表达式执行时操作失败手机号不匹配
问题:
当我对已经附加了 SimpleSchema 的集合执行 "bulk insert" 时如何抑制 SimpleSchema 字段验证?此外,我希望客户在批量插入期间输入任何手机号码,因为用户可能不知道正则表达式。
根据 documentation,您只需在批量插入期间禁止验证:
Clients.insert(doc, { validate: false });
已添加:
如果您不想禁止整个文档验证,您可以将第二个模式附加到同一个集合(删除特定字段的验证)并在批量插入期间切换到它:
Clients.attachSchema(anotherSchema, { selector: { type: 'trustedMobile' } });
...
Clients.insert(doc, { selector: { type: 'trustedMobile' } });
Documentation 用于使用多个模式。
我正在使用 Meteor 1.5 和 MongoDB 3.2
我正在使用下面的简单模式插入客户集合。
import { Mongo } from 'meteor/mongo';
import SimpleSchema from 'simpl-schema';
SimpleSchema.extendOptions(['autoform']);
export const Clients = new Mongo.Collection('Clients');
ClientsSchema = new SimpleSchema({
"gstNo": {
type: String,
label: "GST No.",
regEx: /^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z]{1}[1-9A-Z]{1}Z[0-9A-Z]{1}$/,
optional: true,
},
"mobile": {
type: String,
label: "Mobile 1",
regEx: /^[789]\d{9}$/,
}
});
Clients.attachSchema( ClientsSchema );
使用 Aldeed 的 AutoForm 6.0 的简单 QuickForm 效果很好。
问题场景:
我执行批量插入,因为我有计数为 3000 的客户。我解析 "valid" excel sheet 然后使用循环我尝试插入数据,但是当正则表达式执行时操作失败手机号不匹配
问题:
当我对已经附加了 SimpleSchema 的集合执行 "bulk insert" 时如何抑制 SimpleSchema 字段验证?此外,我希望客户在批量插入期间输入任何手机号码,因为用户可能不知道正则表达式。
根据 documentation,您只需在批量插入期间禁止验证:
Clients.insert(doc, { validate: false });
已添加:
如果您不想禁止整个文档验证,您可以将第二个模式附加到同一个集合(删除特定字段的验证)并在批量插入期间切换到它:
Clients.attachSchema(anotherSchema, { selector: { type: 'trustedMobile' } });
...
Clients.insert(doc, { selector: { type: 'trustedMobile' } });
Documentation 用于使用多个模式。