2016-07-13 83 views
0

我想動態創建用戶名,所以如果新用戶註冊只需要名稱,姓氏和電子郵件。動態生成用戶名流星應用程序使用帳戶

這是我爲新創建的用戶設置用戶名的方式。

Accounts.onCreateUser(function (options, user) { 
    user.username = options.profile.name.toLowerCase(); 
}); 

如果我想創建一個具有相同名稱的用戶,這會帶給我明顯的問題。這將導致錯誤Username already exists。 所以我正在尋找一些想法如何在這種情況下進行。也許可以添加姓氏的第一個字符或在最後加上一個遞增的數字。

但對於這一切,我不知道哪裏來實現這一點,因爲必須有一個循環正在測試的用戶名...

回答

0

是的,你需要測試對現有用戶提交之前到用戶名。讓我們用序列號去老AOL風格:

Accounts.onCreateUser(function (options, user) { 
    let baseUsername = options.profile.name.toLowerCase(); 
    let user.username = baseUsername; 
    let i=0; 
    while (Meteor.users.findOne({ username: user.username })){ // look for an existing user with the same username 
    i++; 
    user.username = baseUsername + i.toString(); 
    } 
}); 

你要確保你的username鍵索引,在MongoDB中是獨一無二的。

+0

如何索引流星中的鍵? – user3142695