0
我正在構建具有兩種類型用戶的應用程序。專業用戶及其客戶。賬戶類型完全不同,不重疊。因此,註冊爲Pro的電子郵件仍然可以用於註冊爲客戶端,並且如果Pro用戶嘗試使用客戶端表單登錄,則其帳戶將不存在。防止在Meteor帳戶創建中的默認重複電子郵件拒絕
問題: Meteor自動防止在創建用戶帳戶時使用重複的電子郵件。我的想法是使用自定義驗證來允許行爲,並基本上創建兩組不同的用戶。以下是我爲「Pro」用戶嘗試的驗證示例。
Accounts.onCreateUser(function(options, user) {
var email = user.email;
if (Meteor.users.find({emails: email, isPro : true}).count() > 0) {
throw new Meteor.Error(403, "This email address is already registered");
}
user.isPro = true;
return user;
});
但流星仍然使用其默認的重複電子郵件拒絕代替。關於如何重寫此行爲的任何想法,還是有更好的方法來創建兩個不同的用戶集?
您是否確實需要或想要單獨的用戶文檔?在用戶對象isPro和isClient中有兩個標誌會出現什麼問題?您可以通過Accounts.createUser函數客戶端傳入isPro或isClient標誌,具體取決於用戶註冊或選擇的選項。然後,一旦他們註冊,你就有一個選擇,讓他們成爲其他類型的用戶。也許這不適合,但我認爲即使可以通過爲同一人提供兩份單獨的文件,您也會遇到問題。 – shambles
這可以工作,但它不會在我的腦海中理想。專業用戶和客戶用戶完全不同。客戶用戶永遠不會轉換爲專業用戶,反之亦然。我認爲最簡單的情況是爲每個用戶類型建立一個完全獨立的數據庫表。我只是不確定這是否可能,所以我試圖讓它工作。 –
我只是覺得它可能有問題,但。如果用戶是一個擁有2個賬戶的客戶,並且他們使用相同的電子郵件地址和相同的密碼(很可能),那麼當他們登錄時,您如何知道應該在哪個賬戶上簽名?反正我沒有看到通過pro或client登錄到Meteor.loginWithPassword函數。另外,如果專業人士想要查看他們的客戶資料,他們需要註銷並重新登錄。也許你可以有2個集合客戶端和專業人士,並存儲用戶的_id。這樣,你只有1個用戶文檔,但你的2個集合 – shambles