我有一个非常适合Node.js的项目,但它必须连接到ODBC数据库,它必须在Windows上运行。我在linux上看到了nodejs的ODBC模块,但没有看到windows。有没有人对如何做到这一点有任何建议?
答案 0 :(得分:4)
如果你像我一样从谷歌来到这里,因为你有旧的(即古老的)系统,我遇到了Is it possible to marry WSH (wscript) with nodejs并且被提醒了npm模块" win32ole" :https://www.npmjs.com/package/win32ole。
虽然不仅仅是一个ODBC解决方案," win32ole"确实让你能够在风箱上做很多事情,就像旧的WSH一样。
var win32ole = require('win32ole');
. . .
// Create an ADODB.Connection Object
dbcon = new ActiveXObject('ADODB.Connection');
如果(像我一样),您在ODBC连接之后因为您正在连接到访问数据库,那么甚至可以使用Jet直接连接示例脚本:
https://github.com/idobatter/node-win32ole/blob/master/examples/access_mdb_sample.js
编辑:它确实需要一个node-gyp,一个需要构建本机代码的模块......
答案 1 :(得分:2)
与我们多年来在ADO.NET中提供的强大且高性能的数据库驱动程序相比,Windows上node.js的数据库驱动程序状态似乎有些不成熟。
我会认真考虑使用Edge来调用C#或CLR程序集进程来访问您的数据库。您可以在C#中编写Repository样式数据访问层,并从node.js中调用它。
我已经证明这适用于使用C#,PetaPoco(可选),.NET 4.5和Oracle ODP驱动程序(Oracle.DataAccess.dll)以及ADO.NET + SQL Server的开发环境。这应该适用于您可以在.NET中与之交谈的任何数据库。
调用.NET CLR函数的节点(server.js)示例:
var edge = require('edge');
// define CLR function proxy
var getData = edge.func({
assemblyFile: '../Repositories/bin/Debug/Repositories.dll',
typeName: 'Repositories.TestRepository',
methodName: 'GetData' // This must be Func<object,Task<object>>
});
// call proxy function
getData({ myParam:1 }, function (error, result) {
if (error) throw error;
console.log(result);
});
GetData C#看起来像这样(请注意,您需要将连接字符串放在包含node.exe的文件夹中的node.exe.config中):
public async Task<object> GetData(object param)
{
using (var db = new Database("NameOfConnString"))
{
return db.Fetch<dynamic>("SELECT * FROM sometable");
}
}
或者,如果使用SQL Server,则可以使用edge-sql。
使用edge-sql的节点示例(server.js)(请注意,您需要根据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);
});
答案 2 :(得分:1)
因此,我不是重做C ++总会做得更好的事情,而是使用node.js和C ++来实现最高效率。
答案 3 :(得分:1)
node-odbc表示它是Linux的unixODBC,但它也适用于Windows,我在这里使用它。 它只是不包含二进制文件,因此您需要在安装node-odbc之前安装windows-build-tools和node-gyp才能构建二进制文件。
npm i -g windows-build-tools
npm i -g node-gyp
npm i odbc
答案 4 :(得分:-9)
NodeJS有一些潜力,但它仍然是一个玩具。前端程序员和后端程序员可以互换的想法是可笑的。但这不是主题......
Microsoft released他们自己的驱动程序。我没有尝试过,所以我不知道它们有多好。我想他们一定有点好,因为我在过去8个月里看到过NodeJS程序员的多个职位发布。 (也没有回应)。