次のコードを使用して、node.jsを使用してSQLAzureデータベースに接続しています
既存のnodejsサーバーアプリをAzureSQLデータベースに接続する方法からコードを取得しました
const express=require('express');
const router = express.Router()
const sql = require('mssql')
const config = {
user: "<user>",
password: "<password>",
server: "<myserver>.database.windows.net",
database: "<mydatabase>",
connectionTimeout: 3000,
parseJSON: true,
options: {
encrypt: true,
enableArithAbort: true
},
pool: {
min: 0,
idleTimeoutMillis: 3000
}
};
const pool = new sql.ConnectionPool(config);
const poolConnect = pool.connect();
router.get('/', async function (req, res) {
console.log('here');
await poolConnect;
try {
const request = pool.request();
const result = await request.query('select 1 as number')
console.log(result);
res.json(result.recordset);
} catch (err) {
console.error('SQL error', err);
res.send(err);
}
});
パスワードを変更すると次のようなエラーが発生するため、コードが接続されていることがわかります
(node:24172) UnhandledPromiseRejectionWarning: ConnectionError: Login failed for user '<user>'.
at Connection.<anonymous> (C:\Users\myuser\node_modules\mssql\lib\tedious\connection-pool.js:68:17)
at Object.onceWrapper (events.js:417:26)
at Connection.emit (events.js:310:20)
at Connection.message (C:\Users\myuser\node_modules\mssql\node_modules\tedious\lib\connection.js:2148:18)
at Connection.dispatchEvent (C:\Users\myuser\node_modules\mssql\node_modules\tedious\lib\connection.js:1279:15)
しかし、正しいパスワードを入力すると、コードはまったく何も出力しません。
で非同期関数に入っていないようです。 router.get('/', async function (req, res) {
なぜ何かアイデアはありますか?
コメントで述べたように、Expressリスナーを起動したり、Expressアプリを対象としたリクエストを行ったりすることはありません。したがって、もちろん、コードが実行されることはありません。テスト目的の場合は、エクスプレスは必要ありません。非同期関数を作成して、アプリで呼び出すだけです。
const sql = require('mssql')
const config = {
user: "<user>",
password: "<password>",
server: "<myserver>.database.windows.net",
database: "<mydatabase>",
connectionTimeout: 3000,
parseJSON: true,
options: {
encrypt: true,
enableArithAbort: true
},
pool: {
min: 0,
idleTimeoutMillis: 3000
}
};
const pool = new sql.ConnectionPool(config);
doRequest()
.then(_ => { console.log("succeeded"); })
.catch(e => { console.log("error", e); });
async function doRequest() {
await pool.connect();
let result = await pool.request().query("select 1 as number");
console.log(result);
}
Expressアプリで本当に必要な場合は、そこにある基本的なExpress初心者向けチュートリアルを1つ入手し、簡単なExpressを作成して、ルートハンドラーの1つにdb-requestコードを含めます...
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加