我正在尝试从 Windows 7 中的 Node.js 连接到 Oracle 数据库。这可能吗?我还没有找到适用于 Windows 的 Node.js 插件。有什么推荐的解决方法吗?我猜至少还有其他人想在 Windows 上使用 Node.js 并且需要连接到 Oracle。如果有必要,我愿意接受简单的解决方法。谢谢您的帮助。
5 回答
你需要直接从 Node.js 连接到 oracle 吗?您可以用另一种语言编写数据库事务,并通过 Web 服务将它们公开给 Node.js。
有 Oracle oracledb 制作的驱动程序http://www.oracle.com/technetwork/database/database-technologies/node_js/oracle-node-js-2399407.html
更新:Oracle 已在GITnode-oracledb
上发布了一个驱动程序,该驱动程序将允许 nodejs 应用程序连接到 Windows 上的 oracle DB。
与我们多年来在 ADO.NET 中提供的强大且高性能的数据库驱动程序相比,Windows 上 node.js 的数据库驱动程序的状态似乎有些不成熟。
我会认真考虑使用Edge在进程中调用 C# 或 CLR 程序集来访问您的数据库。您可以在 C# 中编写存储库样式的数据访问层并从 node.js 调用它。
我已经证明这在使用 C#、PetaPoco(可选)、.NET 4.5 和 Oracle ODP 驱动程序 (Oracle.DataAccess.dll) 的开发环境中有效。这也应该适用于您可以在 .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");
}
}
(请注意,Oracle.DataAccess.dll 需要位于包含 node.exe 的文件夹中。)
此驱动程序适用于 Window:https ://npmjs.org/package/oracle
与您在 Stack Overflow 上的问题类似: Connect Node.js with Oracle on Windows platform
http://github.com/mariano/node-db-oracle该项目旨在为nodejs添加oracle支持
编辑:现在有一个用于 Oracle 的 office nodejs 驱动程序,由 Oracle 称为 node-oracle
https://blogs.oracle.com/opal/entry/introducing_node_oracledb_a_node