Это в основном для будущих читателей. Поскольку вопрос (по крайней мере, название) фокусируется на «подключении к базе данных sql-сервера из узла js», я хотел бы получить информацию о модуле узла «mssql».
В настоящий момент у нас есть стабильная версия драйвера Microsoft SQL Server для NodeJs («msnodesql»), доступная здесь: https://www.npmjs.com/package/msnodesql. Хотя он отлично справляется с собственной интеграцией с базой данных Microsoft SQL Server (чем любой другой модуль узла), есть несколько вещей, о которых нужно помнить.
«msnodesql» требует нескольких предварительных условий (например, python, VC++, родной клиент SQL и т. Д.), Которые должны быть установлены на главной машине. Это делает ваше «узловое» приложение «Windows» зависимым.Если у вас все в порядке с развертыванием на базе Windows, лучше работать с msnodesql.
С другой стороны, существует еще один модуль под названием «mssql» (доступно здесь https://www.npmjs.com/package/mssql), который может работать с «утомительным» или «msnodesql» на основе конфигурации. Хотя этот модуль может быть не таким всеобъемлющим, как «msnodesql», он в значительной степени решает большинство потребностей.
Если вы хотели бы начать с «MSSQL», я наткнулся на простой и прямой вперед видео, которое объясняет о подключении к базе данных Microsoft SQL Server с помощью NodeJs здесь: https://www.youtube.com/watch?v=MLcXfRH1YzE
Исходный код для видео выше является можно посмотреть здесь: http://techcbt.com/Post/341/Node-js-basic-programming-tutorials-videos/how-to-connect-to-microsoft-sql-server-using-node-js
Только в случае, если указанные выше ссылки не работают, я в том числе исходный код здесь:
var sql = require("mssql");
var dbConfig = {
server: "localhost\\SQL2K14",
database: "SampleDb",
user: "sa",
password: "sql2014",
port: 1433
};
function getEmp() {
var conn = new sql.Connection(dbConfig);
conn.connect().then(function() {
var req = new sql.Request(conn);
req.query("SELECT * FROM emp").then(function (recordset) {
console.log(recordset);
conn.close();
})
.catch(function (err) {
console.log(err);
conn.close();
});
})
.catch(function (err) {
console.log(err);
});
//--> another way
//var req = new sql.Request(conn);
//conn.connect(function (err) {
// if (err) {
// console.log(err);
// return;
// }
// req.query("SELECT * FROM emp", function (err, recordset) {
// if (err) {
// console.log(err);
// }
// else {
// console.log(recordset);
// }
// conn.close();
// });
//});
}
getEmp();
Приведенный выше код довольно сам пояснительный. Мы определяем параметры соединения db (в объекте JS «dbConfig»), а затем используйте объект «Connection» для подключения к SQL Server. Чтобы выполнить оператор «SELECT», в этом случае он использует объект «Запрос», который внутренне работает с объектом «Connection». Код объясняет оба варианта использования «обещаний» и «обратных вызовов».
В приведенном выше исходном коде объясняется только подключение к базе данных sql-сервера и выполнение запроса SELECT. Вы можете легко взять его на следующий уровень, следуя документации «MSSQL» узел доступен по адресу: https://www.npmjs.com/package/mssql
UPDATE: Существует новое видео, которое делает операции CRUD с использованием чистого стандарта Node.js REST (с Microsoft SQL Server) здесь: https://www.youtube.com/watch?v=xT2AvjQ7q9E. Это фантастическое видео, которое объясняет все с нуля (у него очень много кода, и здесь не будет приятно объяснять/копировать весь код)
Я искал решение для этого через пару недель ... спасибо за добавление вопроса. Прямо сейчас я также использую тонкое приложение MVC для обработки SQL-соединения, но мне это не нравится. Досадно, что все ответы, которые я могу найти, указывают на те же неработающие модули. –
@MarcelPopescu https://github.com/pekim/tedious, похоже, работает для меня со следующими ограничениями: он не поддерживает транзакции (даже те, которые явно не выписаны вами, но происходят в хранимых процедурах), и она не поддерживает процедуры, возвращающие несколько наборов результатов. Процедуры, возвращающие несколько наборов результатов, должны быть переписаны в любом случае ИМХО; но без транзакций ограничение использования Node.js + MSSQL на простые почти прозрачные интерфейсы (к счастью, это то, что я пишу). – penartur
@MarcelPopescu Надеюсь, что в один прекрасный день MS выпустит официальный MSSQL-драйвер для Node, как это было с остальными функциями платформы Azure. Хотя в то время я, скорее всего, останусь у нынешнего работодателя и буду использовать старые добрые Postgres: D – penartur