As you can see in the docs, user.emails is an an array of objects with the properties verified and address. So try something like this instead: emails: { type: [Object], optional: true }, 'emails.$.address': { type: String, regEx: SimpleSchema.RegEx.Email }, 'emails.$.verified': { type: Boolean }, ...

It actually works as it should. My silly mistake was to experiment with different templates and worked on the wrong one and therefore did not see any results. The working javascript: // schema for collection var schema = { time: { label: "Time (MM:SS)", type: Number // !!! }, //...

I got around it by simply making another method: notChangedPassword: function() { Meteor.users.update({_id: Meteor.userId()}, {$set: {changedPassword: false}}) } Don't know it wouldn't work with a conditional, though. Looks like a bug. I'll leave this answer here until someone can give a better, more thorough one....

I found in documentation of simpleschema, if anyone else would need solution later on: you can just check against schema: Meteor.methods({ companyAdd: function (companyAttr) { //here we check the data sent to method against the defined schema check(companyAttr, Companies.simpleSchema()); var currentDate = new Date(); var company = _.extend(companyAttr, { createdBy:...

As far as I see it, you have two options: Store user-ids there with type: String Denormalize it as you proposed Denormalize it as you proposed To denormalize it you can do something like this inside your schema: ... modifiedBy: { type: object } 'modifiedBy._id': { type: String, autoValue: function...

You you overwriting the entire content of the user instead of just the userAge in profile. I think the small change below will fix your problem: Meteor.users.update({_id: userId}, {$set: {profile.userAge: 30}}, {validate: false}); I'm not sure what you mean by "ex age", the history of the age?...