I'm having a problem with my express and sql query code. I can't get the value of results
of the sql query below but this works when logging the results
. I've already return the results
here.
Here's my sql.js
code
var dataContext = require('node2sql')({
username: 'user',
password: 'password',
server: '1xx.xx2.xx.xx9',
options: {
database: 'grades'
}
});
module.exports = {
DataQuery: function(query) {
query = query.replace(/\s+/g, '').split("/");
year = query[2].substr(2, 4);
id = query[0];
period = query[1].toUpperCase();
if (period == 'SEM1') {
period = "1st Semester";
} else if (period == "SEM2") {
period = "2nd Semester";
}else if (period == 'SUM') {
period = "Summer";
}
var queryStr = "SELECT SubjectCode,Grade FROM dbo.grade_list_" + year + " WHERE StudentNo=\'" + id + "\' and Semester=\'" + period + "\'";
console.log(queryStr);
dataContext.query(queryStr, function(err, results) {
console.log(results)
return results;
});
}
}
Here's my index page, as you can see I wanted to get the return value of data
and show it to my index page (just a test only).
var express = require('express');
var sql = require('../libs/sql');
var router = express.Router();
router.get('/', function(req, res, next) {
var data = sql.DataQuery("01-666-123/sem2/2009")
res.end(data);
});
module.exports = router;
I accept any of your suggestions guys. I've already read this question which was asked before but still I can't figure out how to make this work. Thanks
You cannot return from a callback. (Callbacks are asynchronous and can complete at any time.) Try this:
sql.js
var dataContext = require('node2sql')({
username: 'user',
password: 'password',
server: '1xx.xx2.xx.xx9',
options: {
database: 'grades'
}
});
module.exports = {
DataQuery: function(query, callback) {
query = query.replace(/\s+/g, '').split("/");
year = query[2].substr(2, 4);
id = query[0];
period = query[1].toUpperCase();
if (period == 'SEM1') {
period = "1st Semester";
} else if (period == "SEM2") {
period = "2nd Semester";
}else if (period == 'SUM') {
period = "Summer";
}
var queryStr = "SELECT SubjectCode,Grade FROM dbo.grade_list_" + year + " WHERE StudentNo=\'" + id + "\' and Semester=\'" + period + "\'";
console.log(queryStr);
dataContext.query(queryStr, callback);
}
}
index.js
var express = require('express');
var sql = require('../libs/sql');
var router = express.Router();
router.get('/', function(req, res, next) {
sql.DataQuery("01-666-123/sem2/2009", function(err, data) {
res.end(data);
});
});
module.exports = router;