我正在使用 npm 的 mssql ( Microsoft SQL Server客户端for Node.js )软件包。我正在尝试执行驻留在我的sql server数据库中的存储过程。一切正常。但是我要做的是返回记录集,以便我可以将其导出以用于其他模块。我正在尝试要做。
function monthlyIceCreamSalesReport (scope){
var connObj = connConfig();
connObj.conn.connect(function(err){
if(err){
console.log(err);
return;
}
connObj.req.input('Month',4);
connObj.req.input('Year',2016);
connObj.req.execute('<myStoredProcedure>', function(err, recordsets, returnValue){
if(err){
console.log(err);
}
else {
console.log(recordsets[0]); // successfully receiving the value
}
connObj.conn.close();
});
});
console.log('check for recordsets', recordsets[0]); // undefined
return recordsets[0];
}
var sqlServerObj = {
monICSalesReport : monthlyIceCreamSalesReport,
};
module.exports = sqlServerObj;
如代码片段所示,由于recordsets [0]的值未定义,因此导出此函数是没有用的。
答案 0 :(得分:0)
在异步性质中你不能
来获取它return
这样。您可以通过传递callback
函数
尝试提供像这样的回调函数
function monthlyIceCreamSalesReport(scope, callback) { // pass a callback to get value
var connObj = connConfig();
connObj.conn.connect(function(err) {
if (err) {
console.log(err);
return;
}
connObj.req.input('Month', 4);
connObj.req.input('Year', 2016);
connObj.req.execute('<myStoredProcedure>', function(err, recordsets, returnValue) {
if (err) {
console.log(err);
} else {
console.log(recordsets[0]);
connObj.conn.close();
return callback(null, recordsets[0]); //return as a callback here and get that value in callback from where you called this function
}
});
});
}
var sqlServerObj = {
monICSalesReport: monthlyIceCreamSalesReport,
};
module.exports = sqlServerObj;
注意:查看评论以了解更改
答案 1 :(得分:-1)
<?php
$arr = array( 1, 2, 3, 4 );
$arrGreaterThanTwo = array_filter($arr, function($item){
return $item > 2;
});
未定,因为仅在recordsets[0]
函数范围内定义。你可以这样做:
connObj.req.execute