条件抑制了SimpleSchema现场验证批量插入
问题描述:
期间我使用流星1.5与MongoDB的3.2条件抑制了SimpleSchema现场验证批量插入
我用下面简单的模式插入到客户端集合。
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的自动窗体6.0简单QuickForm它的伟大工程。
问题场景:
我执行批量插入,因为我有计3000客户端我解析“有效” Excel工作表,然后使用循环我尝试插入数据,但是当正则表达式不匹配操作失败对于手机号码
问:
如何抑制SimpleSchema现场验证时,我上已经有一个SimpleSchema连接到它的集合进行“批量插入”?另外我希望客户在批量插入期间放置任何移动号码,因为用户可能不知道正则表达式。
答
根据documentation请让你的批量插入过程中抑制验证:
Clients.insert(doc, { validate: false });
补充:
如果你不想抑制整个文件的验证,就可以把第二模式添加到相同的集合(删除特定字段的验证)并在批量插入期间切换到它:
Clients.attachSchema(anotherSchema, { selector: { type: 'trustedMobile' } });
...
Clients.insert(doc, { selector: { type: 'trustedMobile' } });
Documentation使用多个模式。
你甚至休息/睡觉/离开,我发现你非常积极地参加SO LOL。开玩笑!。顺便让我测试答案。但似乎答案将适用。 –
同样可以说你:)顺便说一句,我已经更新了我的答案,以添加另一个可能的解决方案。 – Styx
它是否适用于'collection2-core 2.0.1'?我正在使用最新的'Autoform 6.2.0'。并为其构建失败 –