How to use simpl-schema - 10 common examples

To help you get started, we’ve selected a few simpl-schema examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github empiricaly / empirica / imports / core / api / players / methods.js View on Github external
// playerIds has changed since it was queried and the lobby might not
        // have any available slots left, loop and retry.
      }
    } catch (error) {
      console.error("Players.methods.ready", error);
    }
  }
});

export const updatePlayerData = new ValidatedMethod({
  name: "Players.methods.updateData",

  validate: new SimpleSchema({
    playerId: {
      type: String,
      regEx: SimpleSchema.RegEx.Id
    },
    key: {
      type: String
    },
    value: {
      type: String
    },
    append: {
      type: Boolean,
      optional: true
    },
    noCallback: {
      type: Boolean,
      optional: true
    }
  }).validator(),
github VulcanJS / Vulcan / packages / nova-lib / lib / collections.js View on Github external
* @param {String} fieldName
 */
Mongo.Collection.prototype.removeField = function (fieldName) {

  var collection = this;
  var schema = _.omit(collection.simpleSchema()._schema, fieldName);

  // add field schema to collection schema
  collection.attachSchema(schema, {replace: true});
};

/**
 * @summary Global schemas object. Note: not reactive, won't be updated after initialization
 */

SimpleSchema.prototype.getProfileFields = function () {
  var schema = this._schema;
  var fields = _.filter(_.keys(schema), function (fieldName) {
    var field = schema[fieldName];
    return !!field.profile;
  });
  return fields;
};

/**
 * @summary Get a list of a schema's private fields
 */
Mongo.Collection.prototype.getPrivateFields = function () {
  var schema = this.simpleSchema()._schema;
  var fields = _.filter(_.keys(schema), function (fieldName) {
    var field = schema[fieldName];
    return field.publish !== true;
github Blockrazor / blockrazor / imports / api / problems / methods.js View on Github external
import { check } from 'meteor/check'
import { sendMessage } from '/imports/api/activityLog/methods'


SimpleSchema.defineValidationErrorTransform(error => {
  const ddpError = new Meteor.Error(error.message);
  ddpError.error = 'validation-error';
  ddpError.details = error.details[0].message;
  return ddpError;
});



export const newProblem = new ValidatedMethod({
  name: 'newProblem',
	validate: new SimpleSchema(Problems.schema.pick("type","header","text","images","images.$","bounty"), {
		requiredByDefault: developmentValidationEnabledFalse
	}).validator({clean:true}),
  run({ type, header, text, images, bounty }) {
			if (Meteor.userId()) {
				if (bounty > 0) { // check if the user can finance the bounty
					let user = UserData.findOne({
						_id: Meteor.userId()
					})

					if (user.balance < bounty) {
						throw new Meteor.Error('Error.', 'messages.problems.insufficient_funds')
					}
				}

				Problems.insert({
					type: type,
github radgrad / radgrad / app / imports / api / opportunity / OpportunityCollection.js View on Github external
constructor() {
    super('Opportunity', new SimpleSchema({
      name: { type: String },
      slugID: { type: String },
      description: { type: String },
      opportunityTypeID: { type: SimpleSchema.RegEx.Id },
      sponsorID: { type: SimpleSchema.RegEx.Id },
      interestIDs: [SimpleSchema.RegEx.Id],
      semesterIDs: [SimpleSchema.RegEx.Id],
      // Optional data
      eventDate: { type: Date, optional: true },
      ice: { type: Object, optional: true, blackbox: true },
      retired: { type: Boolean, optional: true },
    }));
  }
github VulcanJS / Vulcan / packages / vulcan-users / lib / modules / schema.js View on Github external
const linkedinFirstName = Utils.getNestedProperty(user, 'services.linkedin.firstName');
      if (profileName) return profileName;
      if (twitterName) return twitterName;
      if (linkedinFirstName) return `${linkedinFirstName} ${Utils.getNestedProperty(user, 'services.linkedin.lastName')}`;
      if (user.username) return user.username;
      return undefined;
    },
    searchable: true
  },
  /**
    The user's email. Modifiable.
  */
  email: {
    type: String,
    optional: true,
    regEx: SimpleSchema.RegEx.Email,
    mustComplete: true,
    control: "text",
    insertableBy: ['guests'],
    editableBy: ['members'],
    viewableBy: ownsOrIsAdmin,
    order: 20,
    onInsert: (user) => {
      // look in a few places for the user email
      const meteorEmails = Utils.getNestedProperty(user, 'services.meteor-developer.emails');
      const facebookEmail = Utils.getNestedProperty(user, 'services.facebook.email');
      const githubEmail = Utils.getNestedProperty(user, 'services.github.email');
      const googleEmail = Utils.getNestedProperty(user, 'services.google.email');
      const linkedinEmail = Utils.getNestedProperty(user, 'services.linkedin.emailAddress');

      if (meteorEmails) return _.findWhere(meteorEmails, { primary: true }).address;
      if (facebookEmail) return facebookEmail;
github ACGN-stock / acgn-stock / db / dbRuleAgendas.js View on Github external
type: Array
  },
  'issues.$': {
    type: String
  },
  // 已投票使用者userId
  votes: {
    type: Array,
    defaultValue: []
  },
  'votes.$': {
    type: String
  },
  // 活躍玩家人數
  activeUserCount: {
    type: SimpleSchema.Integer,
    min: 0
  }
});
dbRuleAgendas.attachSchema(schema);

dbRuleAgendas.findByIdOrThrow = function(id, options) {
  const result = dbRuleAgendas.findOne(id, options);

  if (! result) {
    throw new Meteor.Error(404, `找不到識別碼為「${id}」的提案!`);
  }

  return result;
};
github ACGN-stock / acgn-stock / db / dbRankUserWealth.js View on Github external
const schema = new SimpleSchema({
  // 商業季度
  seasonId: {
    type: String
  },
  // 使用者ID
  userId: {
    type: String
  },
  // 擁有現金
  money: {
    type: SimpleSchema.Integer
  },
  // 持股總價值
  stocksValue: {
    type: SimpleSchema.Integer
  }
});
dbRankUserWealth.attachSchema(schema);
github ACGN-stock / acgn-stock / db / dbSeason.js View on Github external
},
  // 結束日期
  endDate: {
    type: Date
  },
  // 當季有多少驗證通過的使用者
  userCount: {
    type: SimpleSchema.Integer
  },
  // 當季起始時有多少未被查封的公司
  companiesCount: {
    type: SimpleSchema.Integer
  },
  // 當季有多少推出的新產品
  productCount: {
    type: SimpleSchema.Integer
  }
});
dbSeason.attachSchema(schema);

// 取得目前商業季度
export function getCurrentSeason() {
  return dbSeason.findOne({}, { sort: { beginDate: -1 } }); // TODO 以實際開始時間取代對齊的開始時間
}

// 取得前一個商業季度
export function getPreviousSeason() {
  return dbSeason.findOne({}, { sort: { beginDate: -1 }, skip: 1 });
}

// 每個使用者在季度一開始有多少推薦票
export function getInitialVoteTicketCount(seasonData) {
github naustudio / node-vn-payments / src / sohapay / SohaPay.js View on Github external
* @property {string} transactionId  optional: true, max: 40
 * @property {string} customerId  optional: true, max: 255
 */

/* prettier-ignore */
/**
 * SohaPay checkoutSchema
 * @type {SimpleSchema}
 */
SohaPay.checkoutSchema = new SimpleSchema({
	language				: { type: String, max: 16 },
	orderId					: { type: String, max: 34 },
	customerEmail			: { type: String, max: 24, regEx: SimpleSchema.RegEx.Email },
	customerPhone			: { type: String, max: 15 },
	returnUrl				: { type: String, max: 255 },
	amount					: { type: SimpleSchema.Integer, max: 9999999999 },
	paymentType				: { type: String, max: 1 },
	siteCode				: { type: String, max: 8 },
	transactionInfo			: { type: String, max: 255 },
	version					: { type: String, max: 1 },
	locale					: { type: String, optional: true, max: 2 },
	currency				: { type: String, optional: true, max: 4 },
	billingCity				: { type: String, optional: true, max: 64 },
	billingCountry			: { type: String, optional: true, max: 2 },
	billingPostCode			: { type: String, optional: true, max: 64 },
	billingStateProvince	: { type: String, optional: true, max: 64 },
	billingStreet			: { type: String, optional: true, max: 64 },
	deliveryAddress      	: { type: String, optional: true, max: 255 },
	deliveryCity         	: { type: String, optional: true, max: 255 },
	deliveryCountry      	: { type: String, optional: true, max: 255 },
	deliveryProvince     	: { type: String, optional: true, max: 255 },
	clientIp				: { type: String, optional: true, max: 15 },
github EmurgoHK / emurpas / imports / api / example / methods.js View on Github external
// import { Meteor } from 'meteor/meteor'
import { ValidatedMethod } from 'meteor/mdg:validated-method'
import SimpleSchema from 'simpl-schema'

import { ExampleCollection } from './exampleCollection'

SimpleSchema.extendOptions(['autoform'])

// 4. after defining the schema, we have to define methods that will be used by our form
export const newExample = new ValidatedMethod({
    name: 'newExample', // this name is the method name used in quickForm template 
    validate: ExampleCollection.schema.validator({
    	clean: true, // clean has to be used here so autoValues can execute
    	filter: false // but we don't want to filter out other fields
    }),
    run({ name, description, tags, accept, numValue, number, radio, author, createdAt }) {
        // execute any arbitary code here
        
    	ExampleCollection.insert({
    		name: name,
            description: description,
            tags: tags,
            accept: accept,