我正在尝试确定递归是否适用于我的用例。
我作为参数传递给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但我正在寻找可能更好的方法时,我想到了对同一方法的递归调用。
答案 0 :(得分:0)
暂时解决您的功能
getUniqueUsername: function(firstName) {
if(!firstName) return "";
do {
var randomNum = Math.floor(Math.random() * 9000) + 1000;
var username = firstName.substring(0, 4) + randomNum;
var user = Users.find({username: username}, {"_id": 1});
} while(user);
return username;
}