Kann ich meine Node.js-App auf irgendeine Weise dazu bringen, mit Microsoft SQL zu kommunizieren? Ich habe noch keine MS SQL-Treiber in freier Wildbahn gesehen.
Ich stelle eine sehr einfache App zusammen und muss in der Lage sein, mit einer vorhandenen MS SQL-Datenbank zu kommunizieren (sonst wäre ich mit mongoDB oder Redis gegangen).
sql-server
node.js
node-mssql
tedious
Khuram Malik
quelle
quelle
Antworten:
Wir haben gerade Vorschau-Treiber für Node.JS für SQL Server-Konnektivität veröffentlicht. Sie finden sie hier: http://blogs.msdn.com/b/sqlphp/archive/2012/06/08/introducing-the-microsoft-driver-for-node-js-for-sql-server.aspx
quelle
Die ursprüngliche Frage ist alt und jetzt ist die Verwendung von node-mssql, wie von @Patrik Šimek beantwortet, das Tedious umschließt, wie von @ Tracker1 beantwortet, der beste Weg.
Für den Windows / Azure Node- SQL Server -Treiber, wie in der akzeptierten Antwort erwähnt, müssen Sie eine verrückte Liste von Voraussetzungen installieren: Visual C ++ 2010, SQL Server Native Client 11.0, Python 2.7.x und wahrscheinlich auch Windows 7 SDK für 64-Bit auf Ihrem Computer Server. Sie möchten nicht alle diese GB Software auf Ihrem Windows Server installieren, wenn Sie mich fragen.
Sie möchten wirklich Tedious verwenden . Verwenden Sie aber auch node-mssql , um es zu verpacken und das Codieren erheblich zu vereinfachen.
Update August 2014
Update Februar 2015 - 2.x (stabil, npm)
Das ist einfach langweilig :
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); }
Hier kommt node-mssql, das Tedious als Abhängigkeit hat. Benutze das!
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); }); });
quelle
Kürzlich wurden einige neue SQL Server-Clients von node.js veröffentlicht. Ich habe einen mit dem Namen node-tds geschrieben und einen anderen mit dem Namen langweilig
quelle
Sie könnten vielleicht node-tds.js verwenden :
quelle
*EXPERIMENTAL and currently ABANDONED*
Es gibt ein anderes Modul, das Sie verwenden können - node-mssql . Es verwendet andere TDS-Module als Treiber und bietet eine benutzerfreundliche einheitliche Schnittstelle. Außerdem werden zusätzliche Funktionen und Fehlerbehebungen hinzugefügt.
Zusätzliche Funktionen:
quelle
(Duplizieren meiner Antwort von einer anderen Frage).
Ich würde node-mssql empfehlen , das ein netter Wrapper für andere Konnektoren ist. Die Standardeinstellung ist meine vorherige Wahl ( Tedious ), die eine etwas schönere Schnittstelle bietet. Dies ist eine JavaScript-Implementierung ohne Kompilierungsanforderungen. Dies bedeutet, dass Sie in Windows- und Nicht-Windows-Umgebungen gleichermaßen arbeiten können.
Eine weitere Option, wenn Sie nicht in .NET oder Mono mit einer binären Brücke bringen nichts dagegen wäre zu verwenden edge.js . Das kann sehr schön sein, wenn Sie .NET-Bibliotheken in node.js nutzen möchten
node-tds wird aufgegeben, node-odbc funktioniert nicht mit Windows und der MS node-sqlserver- Treiber scheint nicht unter Nicht-Windows zu funktionieren (und hat einige doofe Anforderungen).
quelle
TSQLFTW - T-SQL für den WIN (dows) - von Fosco Marotto https://github.com/gfosco/tsqlftw
Es handelt sich um eine verwaltete C # - und ADO .NET-Codelösung mit einem C ++ - Wrapper, mit dem Node.js importieren und arbeiten kann.
Wenn Sie .NET kennen, können Sie WCF Data Services (ADO.NET Data Services) ausprobieren. Schreiben Sie eine WCF-App für den Datenzugriff und verwenden Sie Odata (REST für Steroide), um mit der Datenbank zu interagieren
Wenn Sie sich für SOA interessieren und SQL Server 2005 verwenden, können Sie die nativen XML-Webdienste für Microsoft SQL Server 2005 überprüfen
http://msdn.microsoft.com/en-us/library/ms345123(v=sql.90).aspx
Sie können als Webdienst (HTTP, SOAP) auf SQL Server zugreifen.
quelle
Microsoft (The Windows Azure Team) hat gerade einen Knotentreiber für SQL Server veröffentlicht.
Soweit ich weiß, gibt es kein Paket für npm yert, aber es ist Open Source. Und der akzeptierende Gemeinschaftsbeitrag auch.
https://github.com/WindowsAzure/node-sqlserver
Einführungsblogbeitrag hier:
http://blogs.msdn.com/b/sqlphp/archive/2012/06/08/introducing-the-microsoft-driver-for-node-js-for-sql-server.aspx
quelle
Wenn Sie unter .NET einen Blick auf entityspaces.js at werfen, erstellen wir ein vollständiges universelles ORM für Node.js, für das kein WCF-JSON-Dienst erforderlich ist ... https://github.com/EntitySpaces/entityspaces.js
Wenn Sie die MSFT-Backend-Technologie verwenden, können Sie sie jetzt verwenden. Wir erstellen jedoch ein universelles ORM für Node.js und werden in Kürze weitere Informationen dazu erhalten
quelle
Es gibt ein Update von Microsoft. Hier ist eine Reihe von Blog-Posts ( Teil 1 und Teil 2 ).
quelle
Ich würde vorschlagen, einen Blick auf Prisma zu werfen . Wir haben gerade (Oktober 2020) die Unterstützung der Vorschau für SQL Server angekündigt .
Prisma ist ein ORM, bei dem der Schwerpunkt auf Typensicherheit und Entwicklererfahrung liegt. Im Gegensatz zu herkömmlichen ORMs, die Tabellen normalerweise Klassen zuordnen, ordnet Prisma Abfragen Typen zu (in TypeScript) und gibt einfache Objekte aus Abfragen zurück.
Um mit Prisma und SQL Server zu beginnen, lesen Sie dieses Beispiel und beginnen Sie mit der Anleitung in den Dokumenten .
quelle
Die SQL Server-Treiber von Node.j scheinen sehr unausgereift zu sein - es gibt eine Mischung aus verschiedenen Projekten mit unterschiedlichen Abhängigkeiten, Leistungen und Vollständigkeitsgraden, von denen keines Vertrauen schafft.
Ich würde vorschlagen, edge-sql zu verwenden . Dies nutzt das ausgereifte Datenbank-Ökosystem von .NET und hängt nur von .NET ab (ein Kinderspiel, wenn Sie Node unter Windows ausführen - wenn nicht, gibt es Mono , aber das habe ich nicht versucht).
Hier ist ein Knotenbeispiel (server.js), das Edge-SQL verwendet (beachten Sie, dass Sie Ihre Verbindungszeichenfolge gemäß Edge-SQL-Dokumenten in eine Umgebungsvariable einfügen müssen):
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); });
Sie können Edge.js auch mit .NET nutzen, um auf andere Datenbanken wie Oracle zuzugreifen. Ich habe ein Beispiel für diesen Ansatz gegeben hier .
quelle
Der Status ab Mai 2016 lautet wie folgt.
Der offizielle Microsoft SQL-Treiber für Node mit dem Namen node-sqlserver wurde seit einigen Jahren nicht mehr aktualisiert.
Es gibt eine neue Verzweigung namens node-sqlserver-v8 , die mit Node Versions 0.12.x funktioniert. und> = 4.1.x. Dieser Fork verfügt auch über vorkompilierte Binärdateien für x64- und x86-Ziele.
Das Paket ist auf NPM als msnodesqlv8 verfügbar .
Ich empfehle dieses Paket, da es leichtgewichtig ist (keine Abhängigkeiten aufweist) und das einzige ist, das mit allen neueren Versionen von SQL Server, einschließlich SQL LocalDB, funktioniert.
quelle
Jetzt (2016) können Sie Sequelize ORM verwenden, das Folgendes unterstützt:
Es ist weit verbreitet nach seinen Github-Sternen .
quelle
Dieser Link beschreibt nur eine SQL 2000-Lösung, nicht SQL 2005 oder SQL 2008, und dieser Code erlaubt nur das Senden von SQL-Text und erlaubt nicht die Ausführung gespeicherter Prozeduren.
Die eigentliche Lösung wäre, den Knoten JS auf einem Linux-Server oder auf einem virtuellen Linux-Server auf einem Windows-Computer zu installieren. Gehen Sie dann zur Microsoft-Website, laden Sie die JDBC-Java-Treiber herunter und installieren Sie diese Microsoft MS SQL Java-JDBC-Treiber auf einem der beiden Linux-Server oder virtueller Linux-Server.
quelle