Reputation: 2578
In my application, I have used express as a framework for node.js and used mssql to connect to my DB.
Now, I tried to use Koa.js framework instead of express. I tried to call the service using 'Koa-router' but it returns 'Internal Server Error'.
When I tried to debug it using console, the console contains the expected result but the variable is returned before the execution of query completes.
I have used router in app.js as:
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
}
});
My controller page is separate and is as follows:
exports.getTaskMtd = async (ctx) => {
var sql = "SELECT * FROM tasks";
db.executeMultipleSql(sql, function(data, err){
if(err){
}
else{
ctx.body = lookupRes;
}
});
}
Please, let me know where i have to make change to get the result as expected. (to get the result after the execution completes)
Upvotes: 1
Views: 1172
Reputation: 7526
you have to make your getTaskMtd return a promise to be awaitable...
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)
}
});
})
}
Upvotes: 2