2016-02-29 39 views
2

我舉辦了一個Meteor.Error使用自定義[原因]是這樣的:Meteor.Error - 自定義[原因]

if (Meteor.isServer) { 

    Accounts.onCreateUser(function(options, user) { 
    ... 
    if (emailAlreadyExist === true) { 
     throw new Meteor.Error(403, "email already registered"); 
    } else { 
     return user 
    } 
    }) 
} 

然後試圖顯示此錯誤信息給用戶:

if (Meteor.isClient) { 
... 
    Accounts.createUser({ 
     email: email, 
     password: password 
    }, function(error) { 
     if (error) { 
     // Inform the user that account creation failed 
     sAlert.error(error.reason); 
     } else { 
     // Success. 
     } 
    }); 
... 
} 

但是這個警報不顯示我的自定義Meteor.Error [原因],它總是給我「電子郵件已存在」。 我做錯了什麼?

回答

2

我認爲這是因爲Accounts.createUser()正在拋出該錯誤,該錯誤發生在onCreateUser之前,因此執行回調。

+0

你是對的!我剛剛從'isServer'中刪除了驗證,如果電子郵件已經註冊,我仍然可能會出錯。這意味着'Accounts.createUser()'有它自己的驗證內置。實際上,我只是檢查了文檔,並說「如果現有用戶的用戶名或電子郵件只有不同的情況下,createUser將失敗。」 – Edgar

相關問題