2017-10-24 6 views
0

私のアプリケーションでは、expressをnode.jsのフレームワークとして使用し、mssqlを使用して自分のDBに接続しました。Koa.js実行が完了するまで待機する

ここでは、expressの代わりにKoa.jsフレームワークを使用しようとしました。私は 'Koa-router'を使ってサービスを呼び出そうとしましたが、 'Internal Server Error'を返します。

コンソールを使用してデバッグしようとすると、コンソールに期待どおりの結果が含まれていますが、クエリの実行が完了する前に変数が返されます。

私はとしてapp.jsでルータを使用しています

var koa = require('koa'); 
var route = require('koa-router'); 
var serverApi = require("./controllers/serverController.js"); 

router.get('/getTask', async (ctx, next) => { 
    var tasks = await serverApi.getTaskMtd(ctx, next); 
    if (!tasks) { 
     throw new Error("There was an error retrieving your tasks.") 
    } else { 
     ctx.body = tasks 
    } 
}); 

私のコントローラページは独立しており、次のとおりです。

exports.getTaskMtd = async (ctx) => { 
    var sql = "SELECT * FROM tasks"; 
    db.executeMultipleSql(sql, function(data, err){ 
     if(err){ 
     } 
     else{ 
      ctx.body = lookupRes; 
     } 
    }); 
} 

は、私が変更をしなければならない場所を私に教えてください期待どおりの結果を得る。予想通り、一度..私は結果を得ました。..おかげで、あなたのgetTaskMtdはawaitableなるように約束を返し行う必要があり

答えて

1

...

exports.getTaskMtd = (ctx) => { 
    var sql = "SELECT * FROM tasks"; 
    return new Promise((resoleve,reject)=>{ 
     db.executeMultipleSql(sql, function(data, err){ 
      if(err){ 
       reject(err) 
      }else{ 
       resolve(data) 
      } 
     }); 
    }) 

} 
+0

おかげで多くのことを(実行が完了した後、結果を得るために)再び... – user3211705

関連する問題