0
我似乎无法从一个连接向数据库发出多个请求。它总是告诉我,请求只能从登录状态进行。每个连接请求节点JS和SQL?
例如,如下面的代码所示:该功能的getCarIdandOwner
部分将触发罚款。但是getChargeRate
不会。
我想他们像这样结合:
connection.execSqlBatch(getcarIdandOwner, getChargeRate);
但是这并没有工作,要么因为它告诉我,getChargeRate
没有定义。
使用Visual Studio社区,安装了NPM:Underscore和Tedious(for sql)。只需将其作为控制台应用程序运行即可进行测试。
var Connection = require('tedious').Connection;
var config = {
userName: 'user',
password: 'passs',
server: 'somewhere.database.windows.net',
options: {
encrypt: true,
database: 'db-Test',
useColumnNames: true
var connection = new Connection(config);
connection.on('connect', function (err) {
// If no error, then good to proceed.
console.log("Connected".green);
toll("******-b77c-40e0-8f26-d44e98bc7264", "be45c903-****-****-b6ba-4b2fefa3d6b0");
});
function toll(chipId, locId) {
var carId = '';
var userOwner = '';
var charge = '';
var userBalance = '';
getcarIdandOwner = new Request(`SELECT car_id, userOwner FROM Cars WHERE carChipId = '${chipId}'`, function (err) {
if (err) {
console.log(err);
}
});
getcarIdandOwner.on('row', function (columns) {
carId = columns.car_id.value;
userOwner = columns.userOwner.value;
console.log('carId: ', carId, ' userOwner: ', userOwner);
});
getcarIdandOwner.on('done', function (rowCount, more) {
console.log(rowCount + ' rows returned');
if (rowCount = 1) {
console.log('Car Rows Returned Ok'.green);
} else {
console.log('Fatal Error: More than 1 Car Row Returned'.red);
};
});
connection.execSqlBatch(getcarIdandOwner);
getChargeRate = new Request(`SELECT Charge FROM locations WHERE location_id = '${locId}'`, function (err) {
if (err) {
console.log(err);
}
});
getChargeRate.on('row', function (columns) {
charge = columns.charge.value;
console.log('Charging account: ', userOwner, '$', charge);
});
connection.execSqlBatch(getChargeRate);
}
请问。对(“做”是完成回调还是仅仅当请求返回(理想),而在一个错误'if else' – user3784444
好的,谢谢了!我会测试它tmr – user3784444
它应该在Request的完成回调中:'new Request('sql',function(err,rowCount){// here ...}' 。顺便说一句,你也可以将'Event:done'部分中的代码移动到这个回调函数。 –