我正在使用node.js并创建了一个模块来从sql server数据库中获取数据。数据以JSON格式检索。 这是代码
b.js
var mssql = require('mssql');
var config = {
user: 'sa',
password: 'scott',
server: 'MSSQL2008',
database: 'AdventureWorks',
stream: false
};
var msconnection = new mssql.Connection(config, function (err) {
if (err) console.log(err);
});
module.exports.getCustomersDetails = function (callback, id) {
var request = new mssql.Request(msconnection);
//Add Parameters to the SP
if (id != null) {
request.input('ID', id);
}
request.execute('CUSTOMER_DETAILS_GET', function (err, recordsets, returnValue) { // get data
if (err) console.log(err);
responseContent = {
recordDataKey: 'data',
data: recordsets[0]
};
callback(responseContent);
});
};
a.js
var c = require('./b.js');
c.getCustomersDetails(function (responsecontent) {
console.log(responsecontent);
}, '101,202,303,505,808, 100, 200, 300, 400');
当我运行a.js时,控制台没有显示任何内容,因为表中有很多记录。 任何人都可以建议我如何获得所有记录?任何帮助将不胜感激。
编辑:我在一行中有25列,所以它给我带来了前140条记录,但是当我写的时候让我在SP中排名前150或者全部在控制台中没有显示任何内容。
更新 在这种情况下,任何人都可以帮助我并建议我们如何做流式传输?
答案 0 :(得分:1)
Asynchronicity又回来咬你了!
var c = require('./b.js');
// start loading the db
// it's not ready yet when you call the function!
c.getCustomersDetails(function (responsecontent) {
console.log(responsecontent);
}, '101,202,303,505,808, 100, 200, 300, 400');
您需要重写模块以使用初始化函数和回调。我会做类似的事情:
c.init(function(){
c.getCustomersDetails(); // ...
});
和
var msconnection;
exports.init = function(callback){
msconnection = new mssql.Connection(config, function (err) {
if (err) console.log(err);
callback();
});
};