在批量插入期间有条件地抑制 SimpleSchema 的字段验证

conditionally suppress field validation for SimpleSchema during Bulk Insert

我正在使用 Meteor 1.5MongoDB 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 用于使用多个模式。