我正在使用 Meteor 1.5 与 MongoDB 3.2
我正在使用Simple Schema下面插入Clients Collection。
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的客户端。我解析"有效" excel表然后使用循环我尝试插入数据,但当正则表达式与移动号码不匹配时操作失败。
问题:
当我执行"批量插入"时,如何抑制SimpleSchema字段验证?对于已经附加了SimpleSchema的集合?此外,我希望客户在批量插入期间放置任何Mobile no,因为用户可能不知道正则表达式。
答案 0 :(得分:1)
根据documentation,您只需在批量插入期间禁止验证:
Clients.insert(doc, { validate: false });
<强>加了:强>
如果您不想取消整个文档验证,可以将第二个架构附加到同一个集合(删除特定字段的验证)并在批量插入期间切换到它:
Clients.attachSchema(anotherSchema, { selector: { type: 'trustedMobile' } });
...
Clients.insert(doc, { selector: { type: 'trustedMobile' } });
Documentation用于使用多个模式。