「帽子」を使ってトークンを生成しています。
私は非常に偏執的なコードを書き込もうとしています。つまり、システムはIDを生成し、それがすでに取得されているかどうかをチェックし(DBにクエリを実行)、取得されていない場合はIDを返します。ある場合は、5回再試行します。5回経過すると、非常に奇妙なことが起こり、アプリケーションはエラーをスローします。
簡単な質問は、トークンが実際に利用可能である場合に、渡されたコールバックを呼び出すオプション(サイクルの「終了」を参照)を使用して、このコードを順番に5回実行するにはどうすればよいですか?
これは、1回だけ試行するコードです。
var hat = require('hat'),
mongoose = require('mongoose');
exports.makeToken = function( callback ){
Workspace = mongoose.model("Workspace");
var found = false;
var token;
// Generate the token, check that it's indeed available
token = hat();
Workspace.findOne( { 'access.token':token } , function(err, doc){
if(err){
callback(err, null);
} else {
if( doc ){
callback( new Error("Cannot generate unique token"), null );
} else {
callback(null, token );
}
}
});
}