以下のユースケースで再帰がうまく機能するかどうかを判断しようとしています。
パラメータとして渡され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 "";
}
}
一意のユーザー名が見つかるまで、DB の生成とクエリを継続するより良い方法はありますか。true を返すときに同じメソッドへの再帰呼び出しを考えましたが、user
より良い方法を探しています。