我正在尝试确定递归在下面的用例中是否有效。
我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 "";
}
}
是否有更好的方法来继续生成和查询数据库,直到找到唯一的用户名。我想到了在返回 true 时对同一方法的递归调用,user
但正在寻找可能的更好方法。