Esto es principalmente para lectores futuros. Como la pregunta (al menos el título) se centra en "conectarse a la base de datos del servidor SQL desde el nodo js", me gustaría introducir el módulo de nodo "mssql".
En este momento, tenemos una versión estable del controlador de Microsoft SQL Server para NodeJs ("msnodesql") disponible aquí: https://www.npmjs.com/package/msnodesql. Si bien hace un gran trabajo de integración nativa a la base de datos de Microsoft SQL Server (que cualquier otro módulo de nodo), hay un par de cosas para tener en cuenta.
"msnodesql" requieren algunos requisitos previos (como python, VC++, cliente nativo de SQL, etc.) para instalarse en el equipo host. Eso hace que su aplicación "nodo" "Windows" dependa.Si está satisfecho con la implementación basada en "Windows", trabajar con "msnodesql" es lo mejor.
Por otro lado, hay otro módulo llamado "mssql" (disponible aquí https://www.npmjs.com/package/mssql) que puede funcionar con "tedioso" o "msnodesql" en función de la configuración. Si bien este módulo puede no ser tan completo como "msnodesql", prácticamente resuelve la mayoría de las necesidades.
Si desea comenzar con "MSSQL", me encontré con un simple y sencillo vídeo hacia delante, lo que explica acerca de la conexión a la base de datos de Microsoft SQL Server mediante nodejs aquí: https://www.youtube.com/watch?v=MLcXfRH1YzE
El código fuente para el vídeo de arriba es disponible aquí: http://techcbt.com/Post/341/Node-js-basic-programming-tutorials-videos/how-to-connect-to-microsoft-sql-server-using-node-js
por si acaso, si los enlaces anteriores no están trabajando, estoy incluyendo el código fuente aquí:
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();
El código de arriba es bastante auto explicativo. Definimos los parámetros de conexión db (en el objeto JS "dbConfig") y luego usamos el objeto "Conexión" para conectarnos a SQL Server. Para ejecutar una instrucción "SELECT", en este caso, usa el objeto "Request" que trabaja internamente con el objeto "Connection". El código explica ambos sabores del uso de ejecuciones basadas en "promesa" y "devolución de llamada".
El código fuente anterior solo explica cómo conectarse a la base de datos del servidor SQL y ejecutar una consulta SELECT. Usted puede tomar fácilmente al siguiente nivel, siguiendo la documentación del nodo "MSSQL", disponible en: https://www.npmjs.com/package/mssql
ACTUALIZACIÓN: Hay un nuevo video que realiza operaciones CRUD estándar usando Node.js puro descanso (con Microsoft SQL Servidor) aquí: https://www.youtube.com/watch?v=xT2AvjQ7q9E. Es un video fantástico que explica todo desde cero (tiene mucho código y no será tan agradable explicar/copiar todo el código aquí)
He estado buscando una solución para esto Hace un par de semanas ... gracias por agregar la pregunta. En este momento también estoy usando una aplicación MVC delgada para manejar la conexión SQL, pero no me gusta. Es molesto que todas las respuestas que puedo encontrar apuntan a los mismos módulos que no funcionan. –
@MarcelPopescu https://github.com/pekim/tedious parece funcionar para mí, con las siguientes limitaciones: no es compatible con las transacciones (incluso aquellas no emitidas explícitamente por usted pero que ocurren en procedimientos almacenados), y no es compatible. procedimientos que devuelven múltiples conjuntos de resultados. Los procedimientos que devuelven múltiples conjuntos de resultados se deben volver a escribir de todos modos en mi humilde opinión; pero vivir sin transacciones está limitando el uso de Node.js + MSSQL a unas interfaces simples y casi transparentes (afortunadamente, esto es lo que estoy escribiendo). – penartur
@MarcelPopescu Espero que algún día MS lanzará un controlador MSSQL oficial para Node, como lo hicieron con el resto de sus características de la plataforma Azure. Aunque en ese momento probablemente dejaré el empleador actual y usaré Postgres bueno: D – penartur