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'部分中的代碼移動到這個回調函數。 –