meteor - createuser validation error on method with aldeed collection2 -


folks,

i need help. i've been @ sometime , cant seem figure out. should simple. i'm using aldeed collection2 , cant seem past validation error being thrown create user account method. schema pretty standard, attached meteor.users collection:

schema={} //simpleschema.debug = true;   schema.userprofile = new simpleschema({    picture: {     type: string,     optional: true   },   updatedat: {     type: date,     autovalue: function() {       if (this.isupdate) {         return new date();       }     },     denyinsert: true,     optional: true   },   roles: {     type: string,     optional: true   } });  schema.user = new simpleschema({   _id: {     type: string,     regex: simpleschema.regex.id,     optional: true,     denyupdate: true   },    emails: {     type: [object],     optional: true   },   "emails.$.address": {     type: string,     regex: simpleschema.regex.email,     label: ""    },   "emails.$.verified": {     type: boolean,     optional: true   },   createdat: {     optional: true,     type: date,     autovalue: function() {       if (this.isinsert) {         return new date;       } else if (this.isupsert) {         return {$setoninsert: new date};       } else {         this.unset();       }     }   },   profile: {     type: schema.userprofile,     optional: true   },   services: {     type: object,     optional: true,     blackbox: true   },    // option 2: [string] type   // if sure never need use role groups,   // can specify [string] type   roles: {     type: [string],     optional: true,     autovalue: function() {       if (this.isinsert) {         return ['user'];       } else if (this.isupsert) {         return {$setoninsert: ['user']};       } else {         this.unset();       }     }   },    password: {     type: string,     label: "password",     min: 6   }  });  /* attach schema meteor.users collection */ meteor.users.attachschema(schema.user); 

the method on server creating user below:

accounts.config({   forbidclientaccountcreation : true });  //creates user on server meteor.methods({   createnewuseraccount: function(userdata) {     var userid;     check(userdata, schema.user);     //console.log(userdata);      userid = accounts.createuser({       email: userdata.emails[0].address,       password: userdata.password,       profile: userdata.profile     });     //console.log(userid);     return userid;   } });  accounts.oncreateuser(function(options, userdata) {   //user.profile = {};   // wait meteor create user before sending email   //need address exception when existing email tried signing   meteor.settimeout(function () {     accounts.sendverificationemail(userdata._id);   }, 2 * 1000); return userdata; }); 

for client, have following signup.js

template.signup.events({   'submit form': function(e){     // prevent form submitting.     e.preventdefault();     //console.log(doc);     user = {       'email.$.address': $('[name="emails.0.address"]').val(),       password: $('[name="password"]').val()     };      meteor.call('createnewuseraccount', user, function(error) {       if (error) {         return alert(error.reason);       } else {         router.go('/');       }     });    } 

does know i'm doing wrong? schema not validate email address.i error: email.0.address not allowed schema

you're creating object:

user = {   'email.$.address': $('[name="emails.0.address"]').val(),   password: $('[name="password"]').val() }; 

the key literal string 'email.$.address'

so when do:

    userid = accounts.createuser({       email: userdata.emails[0].address,       password: userdata.password,       profile: userdata.profile     }); 

the email key can't find userdata.emails[0] because there no emails key. instead, key 'email.$.address'. also, schema not have key called email.$.address. has 1 called emails.$.address

try:

template.signup.events({   'submit form': function(e){     // prevent form submitting.     e.preventdefault();     //console.log(doc);     user = {       'emails.$.address': $('[name="emails.0.address"]').val(),       password: $('[name="password"]').val()     };      meteor.call('createnewuseraccount', user, function(error) {       if (error) {         return alert(error.reason);       } else {         router.go('/');       }     });    } 

then

//creates user on server meteor.methods({   createnewuseraccount: function(userdata) {     var userid;     check(userdata, schema.user);     //console.log(userdata);      userid = accounts.createuser({       email: userdata['emails.$.address'],       password: userdata.password,       profile: userdata.profile     });     //console.log(userid);     return userid;   } }); 

Comments

Popular posts from this blog

powershell Start-Process exit code -1073741502 when used with Credential from a windows service environment -

twig - Using Twigbridge in a Laravel 5.1 Package -

c# - LINQ join Entities from HashSet's, Join vs Dictionary vs HashSet performance -