2015-05-04 89 views
1

當用戶從使用useraccounts:core包生成的表單中註冊(第一個用戶)時,我們如何自動創建第二個用戶?在Meteor.JS創建第一個用戶時創建第二個用戶

運行從Accounts.onCreateUSer內的Accounts.createUser導致錯誤Exception while invoking method 'ATCreateUserServer' TypeError: Cannot read property '_id' of undefined

Accounts.onCreateUser(function(options, user) { 

    // Create Primary User 
    if(!user.type) { 

     // Set user.type as 'user' 
     user.type = 'user' 

     // Create Secondary User 
     Accounts.createUser({ 
      username: options.profile.slaveName, 
      password: options.profile.slaveName, 
      type: 'slave', 
      profile: { 
       firstName: user.profile.firstName, 
       lastName: user.profile.lastName 
      } 
     }) 

     user.profile = options.profile 
     return user 
    } 


    // Create Secondary User 
    if(user.type == 'slave') { 
     user.profile = options.profile 
     return user 
    } 

}); 

回答

3

它看起來對我像你混爲一談的user論點和論據options。例如,type字段通過options參數進來,而不是user

下面的代碼爲我工作:

Accounts.onCreateUser(function(options, user) { 
    // Create Primary User 
    if(!options.type) { 
    // Set user.type as 'user' 
    options.type = 'user' 

    // Create Secondary User 
    Accounts.createUser({ 
     username: options.profile.slaveName, 
     password: options.profile.slaveName, 
     type: 'slave', 
     profile: { 
      firstName: options.profile.firstName, 
      lastName: options.profile.lastName 
     } 
    }); 

    user.profile = options.profile 
    return user 
    } 


    // Create Secondary User 
    if(options.type == 'slave') { 
    user.profile = options.profile 
    return user 
    } 
}); 

我然後進行測試,像這樣:

// console 
Accounts.createUser({username: "guest", password: "guest", profile: {slaveName: 'guestslave', firstName: "Greatest", lastName: "Ever"}}) 
Meteor.users.find({username: {$regex: 'guest'}}).fetch() 
> [returned two user objects] 
相關問題