Узел.js и Microsoft SQL Server
есть ли способ, которым я могу получить свой узел.js приложение для связи с Microsoft SQL? Я не видел никаких драйверов MS SQL там в дикой природе?
Я ставлю очень простое приложение Вместе и должны быть в состоянии общаться с существующей базой данных MS SQL (в противном случае я бы пошел с mongoDB или Redis)
14 ответов:
мы только что выпустили драйверы предварительного просмотра для Node.JS для подключения к SQL Server. Вы можете найти их здесь: http://blogs.msdn.com/b/sqlphp/archive/2012/06/08/introducing-the-microsoft-driver-for-node-js-for-sql-server.aspx
исходный вопрос старый и теперь, используя node-mssql как ответил @Patrik Šimek, который обертывает нудно как ответил @Tracker1-это лучший способ пойти.
The узел Windows/Azure-драйвер sqlserver как уже упоминалось в принятом ответе, требуется установить сумасшедший список необходимых компонентов: Visual C++ 2010, собственный клиент SQL Server 11.0, python 2.7.x и, вероятно, также Windows 7 SDK для 64-разрядной версии на вашем сервере. Вы не хотите установите все эти ГБ программного обеспечения на вашем сервере Windows, Если вы спросите меня.
вы действительно хотите использовать нудно. Но и использовать node-mssql чтобы обернуть его и сделать кодирование намного легче.
Обновление Август
- оба модуля все еще активно поддерживаются. Вопросы решаются достаточно быстро и эффективно.
- оба модуля поддерживают SQL Server 2000 -
- потоковая передача поддерживается с node-mssql 1.0.1
Обновление Февраля 2015 - 2.x (стабильный, npm)
- обновлено до последней утомительной 1.10
- обещания
- Pipe request to object stream
- подробные ошибки SQL
- обработка прерывания транзакции
- комплексные проверки типа
- CLI
- мелкие исправления
Это просто нудно:
var Connection = require('tedious').Connection; var Request = require('tedious').Request; var config = { server: '192.168.1.212', userName: 'test', password: 'test' }; var connection = new Connection(config); connection.on('connect', function(err) { executeStatement(); } ); function executeStatement() { request = new Request("select 42, 'hello world'", function(err, rowCount) { if (err) { console.log(err); } else { console.log(rowCount + ' rows'); } connection.close(); }); request.on('row', function(columns) { columns.forEach(function(column) { if (column.value === null) { console.log('NULL'); } else { console.log(column.value); } }); }); request.on('done', function(rowCount, more) { console.log(rowCount + ' rows returned'); }); // In SQL Server 2000 you may need: connection.execSqlBatch(request); connection.execSql(request); }
здесь идет node-mssql который имеет утомительный как зависимость. Используй это!
var sql = require('mssql'); var config = { server: '192.168.1.212', user: 'test', password: 'test' }; sql.connect(config, function(err) { var request = new sql.Request(); request.query("select 42, 'hello world'", function(err, recordset) { console.log(recordset); }); });
вы могли бы использовать node-tds.js:
захватывающая реализация протокола TDS для узла.js, чтобы разрешить связь с sql server...
использование:
var mssql = require('./mssql'); var sqlserver = new mssql.mssql(); sqlserver.connect({'Server':__IP__,'Port':'1433','Database':'','User Id':'','Password':''}); var result = sqlserver.execute("SELECT * FROM wherever;");
есть еще один модуль, который вы можете использовать - node-mssql. Он использует другие модули TDS в качестве драйверов и предлагает простой в использовании унифицированный интерфейс. Он также добавляет дополнительные функции и исправления ошибок.
дополнительные характеристики:
- унифицированный интерфейс для нескольких драйверов MSSQL
- объединение соединений с транзакциями и подготовленными отчетами
- параметризованные хранимые процедуры для всех драйверов
- сериализация География и геометрия типы CLR
- Smart JS data type to SQL data type mapper
- поддержка как обещаний, так и стандартных обратных вызовов
(дублировать мой ответ из другого вопроса).
Я бы порекомендовал node-mssql, который является хорошей оболочкой для других разъемов, по умолчанию мой предыдущий выбор (нудно) принося немного приятнее интерфейса. Это имплиментация JavaScript, без требований к компиляции, что означает, что вы можете работать как в windows, так и в других средах.
другой вариант, если вы не возражаете, принося в .Net или моно с двоичным кодом мост будет использовать края.js. Что может быть очень приятно, если вы хотите использовать библиотеки .Net в узле.js
node-tds заброшен, узел-odbc не работает с windows, и MS узел-sqlserver драйвер, похоже, не работает на не-windows (и имеет некоторые глупые требования).
TSQLFTW-T-SQL For the WIN ( dows) - by Fosco Marotto https://github.com/gfosco/tsqlftw
Это решение с управляемым кодом C# и ADO .NET, с оболочкой C++ этого узла.js может импортировать и работать.
Если вы знаете .NET, вы можете попробовать службы данных WCF (ADO.NET Data Services); написать приложение WCF для доступа к данным и использовать odata (REST on steroids) для взаимодействия с базой данных
- службы данных WCF : http://msdn.microsoft.com/en-us/data/bb931106
- OData:http://www.odata.org/
Если вы находитесь в SOA и используете SQL Server 2005, вы можете проверить собственные веб-службы XML для Microsoft SQL Server 2005
http://msdn.microsoft.com/en-us/library/ms345123 (v=sql. 90). aspx
вы можете получить доступ к SQL Server в качестве веб-службы (HTTP, SOAP)
Microsoft (команда Windows Azure) только что выпустила драйвер узла для SQL SERVER.
у него нет пакета для npm yert, насколько я знаю, но он с открытым исходным кодом. И принимающий вклад сообщества тоже.
https://github.com/WindowsAzure/node-sqlserver
введение сообщение в блоге здесь:
Если вы работаете на .NET, посмотрите на entityspaces.js at, мы создаем весь универсальный ORM для узла.js, для которого не требуется служба WCF JSON... https://github.com/EntitySpaces/entityspaces.js
Если вы используете технологию MSFT backend, вы можете использовать ее сейчас, однако мы создаем универсальный узел.js ORM и будет иметь больше информации об этом в ближайшее время
узел.драйверы JS SQL Server кажутся очень незрелыми - есть мешанина различных проектов с различными зависимостями, производительностью и уровнями полноты, ни один из которых не внушает доверия.
Я бы предложил использовать edge-sql. Это использует зрелую экосистему драйверов базы данных .NET и зависит только от .NET (без проблем, если вы используете узел в Windows - если нет моно, но я этого не пробовал).
вот узел пример (сервер.js) с помощью edge-sql (обратите внимание, что вам нужно поместить строку подключения в переменную среды в соответствии с документами edge-sql):
var edge = require('edge'); // edge-sql has built in support for T-SQL / MSSQL Server var getData = edge.func('sql', function () {/* select top 10 * from sometable */ }); getData(null, function (error, result) { if (error) throw error; console.log(result); });
вы также можете использовать края.js С .NET для доступа к другим базам данных, таким как Oracle. Я привел пример такого подхода здесь.
статус по состоянию на май 2016 года выглядит следующим образом.
официальный драйвер Microsoft SQL для узла, называемый узел-sqlserver, не обновлялся в течение ряда лет.
есть новая вилка на этом называется node-sqlserver-v8 это работает с версиями узлов 0.12.х. и >= 4.1.x. эта вилка также имеет предварительно скомпилированные двоичные файлы для целей x64 и x86.
пакет доступен на НПМ как msnodesqlv8.
Я рекомендую этот пакет, потому что он легкий (не имеет зависимостей), и это единственный, который работает со всеми последними версиями SQL Server, включая SQL LocalDB.
теперь (2016) вы можете использовать Sequelize ORM, который поддерживает:
- MySQL / MariaDB,
- PostgreSQL
- SQLite
- Microsoft SQL Server
Он широко используется в соответствии с его звезды Github.
эта ссылка детализирует только решение sql 2000, а не sql 2005 или sql 2008, а также этот код позволяет отправлять только текст sql и не позволяет выполнять хранимые процедуры.
реальным решением было бы установить узел JS на сервере linux или на виртуальном сервере linux на машине windows, а затем перейти на веб-сайт microsoft и загрузить драйверы JDBC java и установить эти драйверы microsoft ms sql java jdbc на сервере linux или Linux virtual сервер.