2016-11-29 3 views
0

Ich verwende Accounts.createUser, um neue Benutzer zur Datenbank hinzuzufügen, aber das Problem ist, dass nicht alle Attribute hinzugefügt werden.Wie füge ich zusätzliche Attribute zur Benutzersammlung hinzu?

Hier ist mein Code neue Benutzer hinzuzufügen:

import {Accounts} from 'meteor/accounts-base'; 

Template.addingUser.events({ 
    'submit #addUser': function (e, t) { 

     e.preventDefault(); 

     Session.set('name', t.find('#name').value); 
     Session.set('email', t.find('#email').value); 
     Session.set('telephoneOffice', t.find('#telephoneOffice').value); 
     Session.set('telephoneHouse', t.find('#telephoneHouse').value); 
     Session.set('salary', t.find('#salary').value); 

     let userId = Accounts.createUser({ 
      username: Session.get('name'), 
      password: "123456", 
      email: Session.get('email'), 
      telephoneOffice: Session.get('telephoneOffice'), 
      telephoneHouse: Session.get('telephoneHouse'), 
      employeeSalary: Session.get('salary'), 
      annualLeave: 14 

     }, function (err) { 
      if (err) 
       console.log(err); 
      else 
       console.log('It worked...'); 
     }); 

     Accounts.sendEnrollmentEmail(userId); 


    } 
}); 

nur der Name, E-Mail und Passwort hinzugefügt werden.

Wie schließe ich die anderen Informationen wie telephoneOffice?

Antwort

2

Sie müssen die zusätzlichen Daten innerhalb des profile Objekt zu übergeben.

Accounts.createUser({ 
    username: Session.get('name'), 
    password: "123456", 
    email: Session.get('email'), 
    profile: { 
    telephoneOffice: Session.get('telephoneOffice'), 
    telephoneHouse: Session.get('telephoneHouse'), 
    employeeSalary: Session.get('salary'), 
    annualLeave: 14 
    } 
    ... 
1

Accounts.createUser akzeptiert keine benutzerdefinierten Argumente außer Benutzername, E-Mail, Passwort und Profil. Die Standardfunktionalität zum Übergeben benutzerdefinierter Benutzerinformationen besteht darin, diese Felder wie telephoneOffice als Teil des Objekts profile zu übergeben, das in das in die Benutzersammlung eingefügte Dokument in user.profile kopiert wird.

Zum Beispiel:

let userId = Accounts.createUser({ 
     username: Session.get('name'), 
     password: "123456", 
     email: Session.get('email'), 
     profile: { 
      telephoneOffice: Session.get('telephoneOffice'), 
      telephoneHouse: Session.get('telephoneHouse'), 
      employeeSalary: Session.get('salary'), 
      annualLeave: 14 
     } 
    }); 

Beachten Sie, dass die user.profile Felder by default modifiable by users sind. Es ist also ein Vermächtnis, aber Meteor empfiehlt, es nicht für die Speicherung zu verwenden.

Wenn Sie diese Felder wollen user statt user.profile sein, tun, was Sie können, ist Ihre individuelle params auf dem profile Objekt wie oben und außer Kraft setzt Accounts.onCreateUser mit dem Standardverhalten dann zu übergeben. Etwas wie folgt aus:

Accounts.onCreateUser(function(options, user) { 
    if (options.profile) 
    _.extend(user, options.profile); 
    return user; 
}); 

weitere Informationen finden Sie hier: https://guide.meteor.com/accounts.html#custom-user-data

Verwandte Themen