使用递归查找唯一的用户名

时间:2013-03-30 21:57:06

标签: javascript recursion

我正在尝试确定递归是否适用于我的用例。

我作为参数传递给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但我正在寻找可能更好的方法时,我想到了对同一方法的递归调用。

1 个答案:

答案 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;
}