问题标签 [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.
node.js - SQLite3 + Node.js - 我应该为每个 INSERT 打开和关闭数据库还是让它始终打开?
我有一个 Node.js 进程监控应用程序,当某个动作发生时写入数据库。此数据库有一个前端,当两者都尝试访问数据时会导致并发错误。内部过程并不重要,但是每秒大约有 3 次写入数据库(我认为这仍然很慢)。这是我的插入语句:
我的问题是,我是否应该为每个插入打开和关闭数据库:
或者在进程开始时打开并让 db 对象保持打开状态?我希望减少并发错误的数量,我正在研究 WAL 选项。谢谢
node.js - 在 node-sqlite3 包中使用 CSV 文件
我sqlite3
在我的网络应用程序中将 npm 包用于模拟餐厅(用于学习目的)。在我当前的实现中,当我的本地服务器启动时,我正在创建一个menuItems
表,如下所示:
但是,我希望我的menuItems
表格不在js
文件中进行硬编码,并且希望实际项目与该文件分开js
。有几个我能想到的解决方案:
使用当前实现和硬编码命令将单个项目插入表中。
使用 SQLite3 导入
csv
文件并将其插入表中。*从文件中读入项目
csv
并通过循环插入它们。在服务器启动之前建立数据库并将其传递给
sqlite3.Database()
构造函数。
*我想选择选项 2。但是,由于这是出于学习目的,我愿意接受任何建议,包括但不限于使用不同的数据库管理包或使用不同类型的文件(也许只是一个txt
文件什么的)。
我知道有一些方法csv
可以使用 SQLite3导入文件。我正在尝试做同样的事情,但来自sqlite3
npm 包。当我尝试通过链接页面中的相同命令(这似乎是特定于 sqlite3 的命令)导入文件时,
我收到错误
尝试使用正常的 SQL 语法,
我收到错误
我的语法中有什么不正确的吗?有没有更好/工作/更有效的方法来做到这一点?选项 3 似乎可行,但我还没有尝试过。
javascript - 在 INSERT 语句之后执行 UPDATE 语句时出现 node-sqlite3 错误
我正在尝试通过它们itemId
的 s将一些项目插入quantities
到我的sqlite3
数据库中,然后通过将它们与另一个表项的比较来更新这些插入的项目itemId
。
我已经将所有内容都包装在Promise
s 中以尝试完成此操作,但无法让事情运行。
抛出的错误似乎来自updateItemNames()
函数:
Caught error: SQLite3 update error: Error: SQLITE_ERROR: near ",": syntax error
.
也许我需要重组我的 SQL 表或以其他顺序调用事物?我对 SQL 没有深入的了解,但我确实在 sqlfiddle 上尝试过同样的事情,并且那里的 SQL 语句看起来很好,所以这似乎是一个 JavaScript/异步问题。我还尝试在orderedItems
不使用WHERE
条件与表进行比较的情况下更新menuItems
表,这很有效。因此,当我将 与 进行比较时,似乎出现了orderedItems.itemId
问题menuItems.itemId
。
node.js - nexe、节点和 sqlite3
我正在尝试让 nexe 与使用 sqlite3 的节点程序一起工作。当我尝试在运行时得到这个:
我已经在网上阅读了所有我能读到的东西——我发现很多文章说不支持 node-pre-gyp,有些说你必须创建一些神秘的 .node 文件,事实上很多人使用 sqlite3 作为一个例子 - 但没有任何线索让我知道如何真正让它工作。
我尝试使用--build-from-source 安装sqlite,这本身就是一种考验,但什么也没做。谁能准确解释如何让 nexe 与 sqlite3 一起工作。
sqlite - SQLite:选择值 >= 2^31 的数字列失败
根据SQLite 文档,数字列可以存储最大为 8 个字节的整数。但是,一旦存储这些值,我就无法实际选择它们:
什么都没有发生 - 没有行被返回
如何在保留整数数据类型的同时正确检索实际值?(将其更改为 REAL 或 TEXT 可以按预期工作,但没有其他选择吗?)
编辑:我在上面的演示中使用了 Navicat,但在我的实际应用程序中也遇到了问题(使用node-sqlite3)。
node.js - 该对象在 run() 方法的回调函数中为空
我正在使用 NodeJS、Express 和 SQLite 编写服务器以提供 RESTful 服务。
我想创建一个端点来将新用户添加到数据库中。端点接收带有参数username和password的 POST 请求,并以新创建的用户的id进行响应。
根据node-sqlite3
包文档,当run
方法成功时,this
回调函数内的对象包含属性lastID
和changes
.
我的问题是,即使run
方法成功并且新用户被successfully
插入到数据库中,this
对象也是空的。
我究竟做错了什么?我怎样才能访问this.lastID
?
node.js - SQLite3 Node.js JSON
我正在使用sqlite3
NPM 包。我想将 JSON 存储在我的数据库列之一中。我知道 SQLite 本身能够存储 JSON https://www.sqlite.org/json1.html,但我不一定确定如何通过 Node.js 做到这一点。
以前有没有人遇到过这种情况,使用sqlite3
NPM 包存储 JSON?使用轻量级 NoSQL 数据库会更好吗?
node.js - NodeJS中SQLite中的竞争条件
我是 NodeJS 和数据库的新手。而且我对我的程序的行为感到困惑。我只是想创建表然后删除它。但是我的代码有问题。结果真的很奇怪。我多次运行我的代码,结果不同。示例结果:
下面列出的代码。如果有人能指出我的错误,我将不胜感激。
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。
对此的任何帮助都会很棒,因为我迷路了。
node.js - node-sqlite3 中的事务
在node-sqlite3
,如果数据库当前处于序列化模式,下一条语句会在前一条语句的回调完成之前等待,还是回调与下一条语句同时运行?
使用 编写事务的最佳方法是node-sqlite3
什么?我已经考虑过这两种方法,但我不确定哪一种是正确的,或者即使它们都是错误的。