0
我想確定遞歸是否在下面的用例中很好地工作。找到遞歸唯一的用戶名
我作爲參數傳入firstName
,我爲我的用戶生成一個唯一的用戶名。
getUniqueUsername: function(firstName) {
if (!firstName) {
var randomNum = Math.floor(Math.random() * 9000) + 1000;
var username = firstName.substring(0, 4) + randomNum;
// check if username is already used - using recursion evaluate for performance
var user = Users.find({username: username}, {"_id": 1});
if (user) {
//call recursion method here
}
return username
} else {
return "";
}
}
有沒有更好的方法來保持生成和查詢數據庫,直到找到唯一的用戶名。當user
返回true但我正在尋找可能更好的方法時,我想到了對同一方法的遞歸調用。
你只需要一個'while'循環。 – Pointy
另外 - 你確定'Users.find()'是一個同步方法嗎? (它可能是,但「查詢數據庫」這個術語讓我想知道......) – Pointy
它應該是檢查有效用戶名的服務器端代碼,或者提供合適的替代方案。不是一些客戶端腳本。 –