2017-09-15 114 views
1

期间我使用流星1.5MongoDB的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连接到它的集合进行“批量插入”?另外我希望客户在批量插入期间放置任何移动号码,因为用户可能不知道正则表达式。

回答

1

根据documentation请让你的批量插入过程中抑制验证:

Clients.insert(doc, { validate: false }); 

补充:

如果你不想抑制整个文件的验证,就可以把第二模式添加到相同的集合(删除特定字段的验证)并在批量插入期间切换到它:

Clients.attachSchema(anotherSchema, { selector: { type: 'trustedMobile' } }); 
... 
Clients.insert(doc, { selector: { type: 'trustedMobile' } }); 

Documentation使用多个模式。

+0

你甚至休息/睡觉/离开,我发现你非常积极地参加SO LOL。开玩笑!。顺便让我测试答案。但似乎答案将适用。 –

+0

同样可以说你:)顺便说一句,我已经更新了我的答案,以添加另一个可能的解决方案。 – Styx

+0

它是否适用于'collection2-core 2.0.1'?我正在使用最新的'Autoform 6.2.0'。并为其构建失败 –