Tedious: μš”μ²­μ€ μ΅œμ’… μƒνƒœκ°€ μ•„λ‹Œ 둜그인 μƒνƒœμ—μ„œλ§Œ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. -- 였λ₯˜

에 λ§Œλ“  2016λ…„ 01μ›” 07일  Β·  4μ½”λ©˜νŠΈ  Β·  좜처: tediousjs/tedious

μ•ˆλ…•ν•˜μ„Έμš” μ—¬λŸ¬λΆ„,

λ°μ΄ν„°λ² μ΄μŠ€ 연결에 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. μž μ‹œ λ™μ•ˆμ€ 잘 μž‘λ™ν–ˆμ§€λ§Œ μ–΄μ œλΆ€ν„° 이 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. 이유λ₯Ό λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.

[μš”μ²­ 였λ₯˜: μ΅œμ’… μƒνƒœκ°€ μ•„λ‹Œ 둜그인 μƒνƒœμ—μ„œλ§Œ μš”μ²­μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.]

connection.on('connect', function(err) {
        Console.log("-------here------");
    if(err) {
        return console.error(err); // <--
        connected = false;
    } else {
        connected = true;
    }
});

λ‚˜λŠ” κ·Έκ°€ connection.on의 콜백 κΈ°λŠ₯에 듀어가지 μ•ŠλŠ”λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. κ·ΈλŠ” 아무 것도 μΈμ‡„ν•˜μ§€ μ•ŠμœΌλ©° 연결됨은 항상 κ±°μ§“μž…λ‹ˆλ‹€.

κ³ λ§™μŠ΅λ‹ˆλ‹€ !!

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ €λŠ” 이 λͺ¨λ“  것에 μ΅μˆ™ν•˜μ§€ μ•Šμ§€λ§Œ μ—°κ²° 디버그 μ΄λ²€νŠΈμ— λŒ€ν•œ ν•Έλ“€λŸ¬λ₯Ό μΆ”κ°€ν•˜λ©΄ 이 μ •ν™•ν•œ 였λ₯˜μ— 도움이 λœλ‹€λŠ” 것을 μ•Œμ•˜μŠ΅λ‹ˆλ‹€. λ‚΄ 연결이 SQL μ„œλ²„μ—μ„œ κ±°λΆ€λ˜μ—ˆλ‹€λŠ” 것을 μ•Œμ•˜μŠ΅λ‹ˆλ‹€.
connection.on('debug', function(err) { console.log('debug:', err);});

λͺ¨λ“  4 λŒ“κΈ€

λΉ„μŠ·ν•œ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

C:\Users\Austin\Desktop\prok>node prok.js
{ [RequestError: Requests can only be made in the LoggedIn state, not the Connecting state
]
  message: 'Requests can only be made in the LoggedIn state, not the Connecting state',
  code: 'EINVALIDSTATE' }
buffer.js:506
    throw new RangeError('index out of range');
          ^
RangeError: index out of range
    at checkOffset (buffer.js:506:11)
    at Buffer.readUInt8 (buffer.js:544:5)
    at Packet.isLast (C:\Users\Austin\Desktop\prok\node_modules\tedious\lib\packet.js:121:
29)
    at ReadablePacketStream.<anonymous> (C:\Users\Austin\Desktop\prok\node_modules\tedious
\lib\message-io.js:102:18)
    at ReadablePacketStream.emit (events.js:107:17)
    at readableAddChunk (C:\Users\Austin\Desktop\prok\node_modules\tedious\node_modules\re
adable-stream\lib\_stream_readable.js:201:16)
    at ReadablePacketStream.Readable.push (C:\Users\Austin\Desktop\prok\node_modules\tedio
us\node_modules\readable-stream\lib\_stream_readable.js:165:10)
    at ReadablePacketStream.Transform.push (C:\Users\Austin\Desktop\prok\node_modules\tedi
ous\node_modules\readable-stream\lib\_stream_transform.js:133:32)
    at ReadablePacketStream._transform (C:\Users\Austin\Desktop\prok\node_modules\tedious\
lib\message-io.js:68:16)
    at ReadablePacketStream.Transform._read (C:\Users\Austin\Desktop\prok\node_modules\ted
ious\node_modules\readable-stream\lib\_stream_transform.js:172:10)

μ—¬κΈ°μ—μ„œ μ •ν™•ν•œ μ½”λ“œ ν˜•μ‹μ„ 거의 μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. https://azure.microsoft.com/en-us/documentation/articles/sql-database-develop-nodejs-simple-linux/

--prok.js--

var Connection = require('tedious').Connection;
var config = {
    userName: 'tester',
    password: 'tester',
    server: 'localhost',
    options: {
        port:3306
    }
};
var connection = new Connection(config);
connection.on('connect', function(err) {
// If no error, then good to proceed.
    console.log("Connected");
});
var Request = require('tedious').Request;
var TYPES = require('tedious').TYPES;
function executeStatement() {
    request = new Request("SELECT * FROM testdb.testtable;", function(err) {
    if (err) {
        console.log(err);}
    });
    var result = "";
    request.on('row', function(columns) {
        console.log('row');
        columns.forEach(function(column) {
          if (column.value === null) {
            console.log('NULL');
          } else {
            result+= column.value + " ";
          }
        });
        console.log(result);
        result ="";
    });
    request.on('done', function(rowCount, more) {
    console.log(rowCount + ' rows returned');
    });
    connection.execSql(request);
}

executeStatement();

@yossazou 무슨 일이 μΌμ–΄λ‚˜κ³  μžˆλŠ”μ§€ μ΄ν•΄ν•˜κΈ°μ— 정보가 μΆ©λΆ„ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν‘œμ‹œλ˜λŠ” 였λ₯˜λŠ” μ§€λ£¨ν•œ DB에 더 이상 μ—°κ²°λ˜μ§€ μ•Šμ€ μƒνƒœμ—μ„œ μš”μ²­μ„ μ‹€ν–‰ν•˜λ €κ³  ν•œλ‹€λŠ” μ˜λ―Έμž…λ‹ˆλ‹€.

@austincap 연결이 μ„€μ •λ˜κΈ° 전에 연결에 λŒ€ν•œ μš”μ²­μ„ μ‹€ν–‰ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ Requests can only be made in the LoggedIn state, not the Connecting state 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

μ €λŠ” 이 λͺ¨λ“  것에 μ΅μˆ™ν•˜μ§€ μ•Šμ§€λ§Œ μ—°κ²° 디버그 μ΄λ²€νŠΈμ— λŒ€ν•œ ν•Έλ“€λŸ¬λ₯Ό μΆ”κ°€ν•˜λ©΄ 이 μ •ν™•ν•œ 였λ₯˜μ— 도움이 λœλ‹€λŠ” 것을 μ•Œμ•˜μŠ΅λ‹ˆλ‹€. λ‚΄ 연결이 SQL μ„œλ²„μ—μ„œ κ±°λΆ€λ˜μ—ˆλ‹€λŠ” 것을 μ•Œμ•˜μŠ΅λ‹ˆλ‹€.
connection.on('debug', function(err) { console.log('debug:', err);});

var Connection = require('μ§€λ£¨ν•œ').Connection;
var μš”μ²­ = μš”κ΅¬('μ§€λ£¨ν•œ').μš”μ²­;
var ν‘œν˜„ = μš”κ΅¬("ν‘œν˜„");
var bodyParser = require("λ³Έλ¬Έ νŒŒμ„œ");
var μ•± = μ΅μŠ€ν”„λ ˆμŠ€();

// λ°”λ”” νŒŒμ„œ 미듀웨어
app.use(bodyParser.json());

//μ„œλ²„ μ„€μ •
var μ„œλ²„ = app.listen(process.env.PORT || 8081, ν•¨μˆ˜() {
var 포트 = server.address().port;
console.log("앱이 ν˜„μž¬ ν¬νŠΈμ—μ„œ μ‹€ν–‰ μ€‘μž…λ‹ˆλ‹€.", 포트);
});

// λ°μ΄ν„°λ² μ΄μŠ€μ— λŒ€ν•œ μ—°κ²° 생성
λ³€μˆ˜ ꡬ성 = {
인증: {
μ˜΅μ…˜: {
userName: 'username', // μ—…λ°μ΄νŠΈ
λΉ„λ°€λ²ˆν˜Έ: 'λΉ„λ°€λ²ˆν˜Έ' // μ—…λ°μ΄νŠΈ
},
μœ ν˜•: 'κΈ°λ³Έ'
},
μ„œλ²„: 'servername.database.windows.net', // μ—…λ°μ΄νŠΈ
μ˜΅μ…˜: {
λ°μ΄ν„°λ² μ΄μŠ€: '개발', //μ—…λ°μ΄νŠΈ
μ•”ν˜Έν™”: true//μ€‘μš”
}
}
// Azure에 λŒ€ν•œ 연결을 μƒμ„±ν•©λ‹ˆλ‹€.
var μ—°κ²° = μƒˆλ‘œμš΄ μ—°κ²°(ꡬ성);
//json λ°°μ—΄ 생성
λ³€μˆ˜ 데이터 = []
function executeStatement(쿼리, res) {
var μš”μ²­ = μƒˆλ‘œμš΄ μš”μ²­(쿼리, ν•¨μˆ˜(였λ₯˜, rowCount, ν–‰) {
λ§Œμ•½ (였λ₯˜) {
console.log(였λ₯˜);
} 또 λ‹€λ₯Έ {
console.log(rowCount + 'ν–‰');
res.send({ μƒνƒœ: 200, 데이터: 데이터, λ©”μ‹œμ§€: "확인"})
}
});

//connection.on('debug', function(err) { console.log('debug:', err);}); if the connection is not working

request.on('row', function (row) {
  data.push({
      ID: row[0].value,
      ProductName: row[1].value,
      Price: row[2].value,
      ProductDescription: row[3].value,
      CreatedDate: row[4].value,
      Username: row[5].value
  })

});
μ—°κ²°.execSql(μš”μ²­);
}

app.get('/api/products', ν•¨μˆ˜(μš”μ²­, 해상도) {
var query =('μ œν’ˆμ—μ„œ * 선택');
μ‹€ν–‰λ¬Έ(쿼리, res);
});

// λ‚΄ db μ•”ν˜Έμ™€ μ‚¬μš©μž 자격 증λͺ…이 μž¬μ„€μ •λ˜μ–΄ μ—°κ²°ν•  수 μ—†μŒμ„ ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰