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

一意のユーザー名が見つかるまで、DB の生成とクエリを継続するより良い方法はありますか。true を返すときに同じメソッドへの再帰呼び出しを考えましたが、userより良い方法を探しています。

4

1 に答える 1