问题标签 [node-oracledb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2320 浏览

javascript - 为什么我的 node-oracledb 执行 Promise 的解决时间稳步增加?

我正在编写一个与Oracle数据库交互的 ETL 工具,该工具还使用node-oracledb 1.10RxJS处理我正在折腾的所有各种异步数据流。我遇到了一个问题,我的应用程序运行的时间越长,调用node-oracledb's 的.execute()时间就越长,而且运行时间似乎线性增加。希望您能在下面的代码中发现错误并纠正它。

首先让我展示一下我是如何运行 Oracle 查询的。我创建了自己的.execute()函数,作为node-oracledb's的包装器.execute()

我的config.database.oracle(没有凭据):

下面是我调用.execute()函数的示例。正如你所看到的,这里发生了很多事情,所以为了清楚起见,让我尝试对其进行一些注释。rnd用于创建唯一 id console.time(),因此我可以跟踪.execute() Promise解析所需的时间。让我知道这种时间测量技术是否存在缺陷。传递给SELECT语句的绑定输入变量是 ssid 标识符的 csv 字符串,并且将返回匹配列表。这允许我批量处理记录,而不是为每个单独的行创建单个查询,希望节省一些执行时间。第一个.then()使生成的对象数组中的每个键都小写。.then()显然,第二个结束了console.time()跟踪。

下面是console.time()输出,它稳步增加,直到达到 60000 毫秒的queueTimeout限制。

我已尝试包含大部分相关代码,如果您需要更多上下文,请告诉我。

编辑:

console.log(pool._logStats())每次.execute()调用该函数时,我都添加了一条语句。NJS-040我已经包含了在错误之前最后一次打印的输出:

0 投票
2 回答
2839 浏览

node.js - 安装 node-oracledb 时出错

我有一个简单的 node.js 服务器和一些在其上运行的应用程序,它应该连接到 Oracle 数据库。出于这个原因,我决定使用node-oracledb驱动程序,但我在安装时遇到了一些问题。我按照Oracle 网页github上的说明进行操作,但下面仍然出现错误。

我的环境配置:

  • Windows 8.1 专业版 64 位
  • node.js v6.4.0
  • npm v3.10.3
  • MS Visual Studio 2013 社区版
  • Python v2.7.12
  • Oracle Instant Client (基础+ SDK) v12.1.0.2.0

Node、Python 和 Oracle Instant Client 文件夹包含在 PATH 变量中。OCI_LIB_DIR 和 OCI_INC_DIR 也是根据github指令设置的。

这是问题所在:当我执行 command 时npm install oracledb -g,出现以下错误:

我真的不知道在哪里寻找解决方案。什么可能导致该错误?节点/oracle 客户端/python 之间是否存在任何已知的不兼容性?

还有一件事:github指令说:

确保正确设置 Microsoft Visual Studio 环境变量。使用 set PATH 并验证它是否包含您的 Visual Studio 路径。如果未设置,请使用 vcvars64.bat(如果使用 32 位二进制文​​件构建,则使用 vcvars.bat)设置环境。

应该设置哪些 VS 环境变量,哪些 VS 路径应该包含在 PATH 中?

0 投票
1 回答
1086 浏览

node.js - 使用带有 node-oracledb 的 SID 连接到 OracleDB 失败

我正在尝试使用 SID 连接到 Oracle DB 并收到以下错误

获取连接时出错 -错误:ORA-12545:连接失败,因为目标主机或对象不存在

我试过以下连接字符串:

主机:1521:SID

主机:1521/SID

HOST、PORT 和 SID 都是正确的,我可以使用 DBVisualizer 进行连接。

此外,我能够使用 SERVICE NAME 与 DBVisualizer 和节点应用程序成功连接。

有人可以帮我连接 SID 吗?

0 投票
1 回答
1206 浏览

node.js - 在节点 oracle 中增加 OUT BIND 的大小。NJS-016:缓冲区太小,无法在错误时绑定 OUT(本机)

我正在使用sails-oracle-db 适配器将我的sails 应用程序连接到oracle。 https://www.npmjs.com/package/sails-oracle-db

Sails-oracle-db 内部使用 https://github.com/oracle/node-oracledb

我已按模型定义为

在 oracle 数据库中,我有一个名为 datapass 的表,其中有一个名为 assets 的列( varchar2 ,其大小为 4000 字节)

当我将数据插入此列时,它的值为

然后一切正常

但是当向资产数组添加一个条目并且数据的大小小于 4000Bytes

然后它给了我错误

:NJS-016:缓冲区太小,无法在错误时绑定(本机)

0 投票
1 回答
3277 浏览

node.js - Oracle 和 PostgreSQL 的节点 ORM

我正在寻找与 Oracle 和 PostgreSQL 一起工作的节点 ORM。

我看到 Waterline 和 Sequelize 没有内置对 Oracle 的支持。

Sequelize-Oracle 是可用的。

是否有同时支持 Oracle 和 PostgreSQL 的单节点 ORM 模块?

请建议。

0 投票
1 回答
585 浏览

node.js - 返回使用 oracledb npm 包时得到的结果

oracledb npm package在创建 node.js 后端 API 时用于建立与数据库的连接。当我这样做时,我能够获得结果console.log(result.rows)

下面是功能代码

我从其他文件中调用 getDbConnection 函数,当我使用 console.log() 时调用console.log(getDbConnection(query)). 我得到未定义的结果。我该如何解决这个问题。

0 投票
0 回答
817 浏览

node.js - 将nodejs连接到oracle

我使用以下说明安装了 node-oracle:https ://github.com/oracle/node-oracledb

但是,我一直在努力尝试连接到远程 oracle 数据库。所以我正在利用社区来帮助我。我创建了不同的 *.ora 文件(ldap.ora、sql.ora TNS 等)并将我的 TNS_ADMIN 目录设置为这些文件所在的位置。底线是我有这个连接字符串:

我可以使用 Oracle SQL Developer 很好地访问数据库。但是,我使用 SQLPlus 或 Node 没有成功。

我已经检查了这些(以及许多其他):

https://community.oracle.com/thread/3759037

如何使用 node-oracledb 连接到 LDAP 服务器?

连接到 oracle 时出错

ORA-12560: TNS: 协议适配器错误

有没有人想出这一点,并可以发布以下解决方案:

  1. 你的 jdbc 连接字符串
  2. 您的示例 *.ora 文件或您从节点传递给 oracledb.getConnection() 的任何参数?

谢谢,

0 投票
1 回答
77 浏览

node.js - 业力:node-oracledb 没有很好地导入

我的node-oracledb "oracledb": "1.11.0"在我的项目中运行良好,但在我的测试中运行不佳。

命令后$ npm test

我不明白发生了什么,我需要在karma.conf文件中添加一些东西来启用 oracledb commonjs 依赖?

我有点迷茫,任何建议都会很棒

非常感谢!

0 投票
1 回答
4965 浏览

javascript - Node.js + OracleDB:ORA-01036:非法变量名称/编号

你好,你是美丽的人。

我正在尝试使用连接到 OracleDB 的 node.js 创建 REST API,但我正在努力让这些愚蠢的绑定变量正常工作。

这是我的代码:

出于某种原因,我收到了错误

如果我删除绑定变量,分配一个静态值并在 sql 语句后删除“req.params.SCHEMA”并将括号留空,它可以工作。

我知道我拉入绑定变量的方式一定很简单,但我把头发拉出来了。

请帮帮我欧比旺克诺比……你是我唯一的希望。

谢谢!

0 投票
1 回答
1552 浏览

node.js - Node.Js Oracledb 可选数组作为 IN 绑定参数到 Oracle 过程

我正在尝试在以下链接中提到的过程中传递数组,但该数组应该是可选的。我在过程中使用 forall 进行批量插入。但是某些时间列表也可能为空,并且程序中的其他内容也应该成功执行。

https://github.com/oracle/node-oracledb/blob/master/doc/api.md#plsqlindexbybinds

可以找到但如果我不想通过 vals 我会收到错误

我试过了

我收到以下错误消息

尝试传递 null 或 undefined 或不传递时:

尝试传递空数组时

我通过使用 null 传递数组来解决问题

并在执行 FORALL 之前从列表中删除空值的过程中。

这适用于临时,但我真的很想以适当的方式解决这个问题。