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 "";
    }
}

是否有更好的方法来继续生成和查询数据库,直到找到唯一的用户名。我想到了在返回 true 时对同一方法的递归调用,user但正在寻找可能的更好方法。

4

1 回答 1

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;
}
于 2013-03-30T22:04:28.043 回答