Я создаю простую службу REST с помощью Node.js
Когда я отправляю запрос GET
, я получаю сообщение об ошибке:
TypeError: sqlDb.Connection не является конструктором в Object.exports.executeSql
Вот мой код.
< Сильный > settings.js
exports.dbConfig = {
user: "sa",
password: "sam",
server: "localhost\\1433",
database: "SampleDb",
port: 1433
};
exports.webPort = 9000;
db.js
var sqlDb = require("mssql");
var settings = require("../settings");
exports.executeSql = function(sql, callback) {
var conn = new sqlDb.Connection(settings.dbConfig);
conn.connect()
.then(function() {
var req = new sqlDb.Request(conn);
req.query(sql)
.then(function(recordset) {
callback(recordset);
})
.catch(function(err) {
console.log(err);
callback(null, err);
});
})
.catch(function(err) {
console.log(err);
callback(null, err);
});
};
< Сильный > employee.js
var db = require("../core/db");
exports.getList = function(req, resp) {
db.executeSql("SELECT * FROM emp", function(data, err) {
if (err) {
resp.writeHead(500, "Internal Error Occoured", {
"Content-type": "text/html"
});
resp.write("<html><head><title>500</title></head><body>500: Internal Error, Details:" + err + "</body></html>");
resp.end();
} else {
resp.writeHead(200, {
"Content-Type": "application/json"
});
resp.write(JSON.stringify(data));
}
resp.end();
});
};
2 ответа
Измените Connection
на ConnectionPool
const conn = new sqlDb.ConnectionPool(settings.dbConfig);
conn.connect();
Из документации npm пакета mssql:
Изменения с 3.x на 4.x -
Connection
был переименован вConnectionPool
.
https://www.npmjs.com/package/mssql#3x-to-4x-changes
Следуя этому правильному ответу, у меня возникла эта проблема при обновлении модулей node.js, но мне пришлось поддерживать старый код как Что ж, мне пришлось написать метод, который в обоих случаях может работать неправильно:
function CreateDbConnection(callback) {
let connectionFunc = null;
if (sql.ConnectionPool)
connectionFunc = sql.ConnectionPool;
else
connectionFunc = sql.Connection;
let connection = new connectionFunc(settings.sqlConfig, function (err) {
if (err) {
logger.error('Error connecting to database: ' + (err.message || err));
callback("ERROR", null);
} else {
callback(null, connection);
}
});
}
Это позволит проверить, какой метод доступен, и использовать его.
Пример фактического использования:
CreateDbConnection(function (err, connection) {
if (err) {
console.log('connection failed');
} else {
console.log('Doing stuff with connection...');
//important to close when done:
connection.close();
}
});
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.