问题标签 [node-sqlite3]

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 回答
2493 浏览

node.js - SQLite3 + Node.js - 我应该为每个 INSERT 打开和关闭数据库还是让它始终打开?

我有一个 Node.js 进程监控应用程序,当某个动作发生时写入数据库。此数据库有一个前端,当两者都尝试访问数据时会导致并发错误。内部过程并不重要,但是每秒大约有 3 次写入数据库(我认为这仍然很慢)。这是我的插入语句:

我的问题是,我是否应该为每个插入打开和关闭数据库:

或者在进程开始时打开并让 db 对象保持打开状态?我希望减少并发错误的数量,我正在研究 WAL 选项。谢谢

0 投票
3 回答
3141 浏览

node.js - 在 node-sqlite3 包中使用 CSV 文件

sqlite3在我的网络应用程序中将 npm 包用于模拟餐厅(用于学习目的)。在我当前的实现中,当我的本地服务器启动时,我正在创建一个menuItems表,如下所示:

但是,我希望我的menuItems表格不在js文件中进行硬编码,并且希望实际项目与该文件分开js。有几个我能想到的解决方案:

  1. 使用当前实现和硬编码命令将单个项目插入表中。

  2. 使用 SQLite3 导入csv文件并将其插入表中。*

  3. 从文件中读入项目csv并通过循环插入它们。

  4. 在服务器启动之前建立数据库并将其传递给sqlite3.Database()构造函数。

*我想选择选项 2。但是,由于这是出于学习目的,我愿意接受任何建议,包括但不限于使用不同的数据库管理包或使用不同类型的文件(也许只是一个txt文件什么的)。

我知道有一些方法csv可以使用 SQLite3导入文件。我正在尝试做同样的事情,但来自sqlite3npm 包。当我尝试通过链接页面中的相同命令(这似乎是特定于 sqlite3 的命令)导入文件时,

我收到错误

尝试使用正常的 SQL 语法

我收到错误

我的语法中有什么不正确的吗?有没有更好/工作/更有效的方法来做到这一点?选项 3 似乎可行,但我还没有尝试过。

0 投票
1 回答
480 浏览

javascript - 在 INSERT 语句之后执行 UPDATE 语句时出现 node-sqlite3 错误

我正在尝试通过它们itemId的 s将一些项目插入quantities到我的sqlite3数据库中,然后通过将它们与另一个表项的比较来更新这些插入的项目itemId

我已经将所有内容都包装在Promises 中以尝试完成此操作,但无法让事情运行。

抛出的错误似乎来自updateItemNames()函数:

Caught error: SQLite3 update error: Error: SQLITE_ERROR: near ",": syntax error.

也许我需要重组我的 SQL 表或以其他顺序调用事物?我对 SQL 没有深入的了解,但我确实在 sqlfiddle 上尝试过同样的事情,并且那里的 SQL 语句看起来很好,所以这似乎是一个 JavaScript/异步问题。我还尝试在orderedItems不使用WHERE条件与表进行比较的情况下更新menuItems表,这很有效。因此,当我将 与 进行比较时,似乎出现了orderedItems.itemId问题menuItems.itemId

0 投票
1 回答
443 浏览

node.js - nexe、节点和 sqlite3

我正在尝试让 nexe 与使用 sqlite3 的节点程序一起工作。当我尝试在运行时得到这个:

我已经在网上阅读了所有我能读到的东西——我发现很多文章说不支持 node-pre-gyp,有些说你必须创建一些神秘的 .node 文件,事实上很多人使用 sqlite3 作为一个例子 - 但没有任何线索让我知道如何真正让它工作。

我尝试使用--build-from-source 安装sqlite,这本身就是一种考验,但什么也没做。谁能准确解释如何让 nexe 与 sqlite3 一起工作。

0 投票
0 回答
68 浏览

sqlite - SQLite:选择值 >= 2^31 的数字列失败

根据SQLite 文档,数字列可以存储最大为 8 个字节的整数。但是,一旦存储这些值,我就无法实际选择它们:

什么都没有发生 - 没有行被返回

如何在保留整数数据类型的同时正确检索实际值?(将其更改为 REAL 或 TEXT 可以按预期工作,但没有其他选择吗?)

编辑:我在上面的演示中使用了 Navicat,但在我的实际应用程序中也遇到了问题(使用node-sqlite3)。

0 投票
1 回答
97 浏览

node.js - 该对象在 run() 方法的回调函数中为空

我正在使用 NodeJS、Express 和 SQLite 编写服务器以提供 RESTful 服务。

我想创建一个端点来将新用户添加到数据库中。端点接收带有参数usernamepassword的 POST 请求,并以新创建的用户的id进行响应。

根据node-sqlite3文档,当run方法成功时,this回调函数内的对象包含属性lastIDchanges.

我的问题是,即使run方法成功并且新用户被successfully插入到数据库中,this对象也是空的。

我究竟做错了什么?我怎样才能访问this.lastID

0 投票
1 回答
6910 浏览

node.js - SQLite3 Node.js JSON

我正在使用sqlite3NPM 包。我想将 JSON 存储在我的数据库列之一中。我知道 SQLite 本身能够存储 JSON https://www.sqlite.org/json1.html,但我不一定确定如何通过 Node.js 做到这一点。

以前有没有人遇到过这种情况,使用sqlite3NPM 包存储 JSON?使用轻量级 NoSQL 数据库会更好吗?

0 投票
1 回答
222 浏览

node.js - NodeJS中SQLite中的竞争条件

我是 NodeJS 和数据库的新手。而且我对我的程序的行为感到困惑。我只是想创建表然后删除它。但是我的代码有问题。结果真的很奇怪。我多次运行我的代码,结果不同。示例结果:

下面列出的代码。如果有人能指出我的错误,我将不胜感激。

0 投票
1 回答
1360 浏览

node.js - 将 promise 与 db insert 链接在一起

我正在努力尝试将三个需要在 node.js 中同步的请求链接在一起。这是我使用 Promise 的尝试,但我收到一条错误消息,指出 db.run 不是函数。第一个动作应该插入到我的 sqlite 数据库中。我需要的最重要的东西是 this.lastID 变量,它列出了最后一个 enetered 项目的 id。在尝试使用 Promise 之前,我在范围界定方面遇到了麻烦。这很重要,因为我需要获取此值并在回调键下的 JSON 对象中使用它。最后,我使用 requests npm 包发送请求。

我正在使用 bluebird promise 库、sqlite3 npm 包、nodejs、express。

对此的任何帮助都会很棒,因为我迷路了。

0 投票
1 回答
6587 浏览

node.js - node-sqlite3 中的事务

node-sqlite3,如果数据库当前处于序列化模式,下一条语句会在前一条语句的回调完成之前等待,还是回调与下一条语句同时运行?

使用 编写事务的最佳方法是node-sqlite3什么?我已经考虑过这两种方法,但我不确定哪一种是正确的,或者即使它们都是错误的。