1

Node Express フレームワークを使用して API を構築していますが、Basic Auth 機能に関する問題に遭遇しました。ユーザーに関する情報を取得し、資格情報を検証するには、SQL クエリを実行する必要があります。この問題は、クエリが完了した後に発生します。以下に示すように、SQL データはコールバック関数に送信されます。そのコールバック内ですべての検証を行いたいのですが、SQL コールバックから抜け出して、express.basicAuth() 関数から true/falseを返したいです。グローバル変数を設定してから SQL コールバックの外でアクセスしようとしましたが、そのグローバル変数にアクセスするブロックを取得するまでにクエリが終了しない場合があります。よろしくお願いします。

var auth = express.basicAuth(function(user, pass) {

    // Query to select information regarding the requested user
    /* Query here to find the requested user's data */

    client.query(query, function (err, rows, fields) {
        if (err) throw err;
        GLOBAL.sql = rows; 

        /* I want to break out of this query callback function and return true from this auth variable */

    });

       // Sometimes the query isn't completed when it gets to this stage
       console.log(JSON.stringify(GLOBAL.sql));


});
4

1 に答える 1

2

express.basicAuth非同期操作もサポートしています。

var auth = express.basicAuth(function(user, pass, next) { 
  ...
  client.query(query, function (err, rows, fields) { 
    if (err)
      next(err);
    else
    if (/* authentication successful */)
      next(null, user); // <-- sets 'req.remoteUser' to the username
    else
      next(null, false);
  });
});
于 2013-03-30T12:50:37.337 に答える