问题标签 [better-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 回答
36 浏览

sql - 我是否需要检查 better-sqlite3 命令的绑定参数的格式

看看这段代码,它使用better-sqlite3

我是否需要验证codepost 查询的参数格式是否正确?如果输入错误,此代码是否可能出现故障?

0 投票
2 回答
1081 浏览

node.js - 删除数据库中的记录

我有一个完美运行的日志记录命令,唯一的问题是我无法完成off命令部分。(guildid, channel)如果公会匹配, 我需要它来删除两条记录。日志记录 这是我尝试过的。

查看照片,当运行 args 时,off如果公会内容与运行命令的公会匹配,我需要它删除公会内容(495602...)和频道内容(<#5290...)。

0 投票
1 回答
294 浏览

node.js - 为 channel.id 读取 DB 的内容

我的日志记录命令需要一个通道来发送消息,我使用>logging #channel-here命令执行此操作,它存储在 better-sqlite3 上,我的问题是我不确定如何读取内容并将其转换为通道。 日志记录

我已经为此工作了几天,并且尝试了几种不同的方法,这是我最近的尝试

const logs =如果 guildid 记录与删除消息的记录匹配,则需要=您在频道记录中看到的频道 ID。

0 投票
1 回答
572 浏览

node.js - 查询 better-sqlite3 以获取记录数据

所以我有一个logging在我的数据库中调用的表,其架构为guildid & channel

我需要得到匹配的内容,我跑去channel看看实际发生了什么,它说guildidconsole.log(logs){ channel: '495602952778678274' }

我选择留下完整的代码,这样你就可以清楚地看到我想要完成的事情。

我也试过了logs.send...,最后我试过了

0 投票
0 回答
38 浏览

node-sqlite3 - 不能在 node-sqlite3 中执行此操作(使用 for 循环)

我需要使用 node-sqlite3 获得相同的结果,因为我想在 rest api 中使用它并且它需要是异步的。我怎样才能做到这一点?

当我在 for 循环中的 node-sqlite3 中尝试它时,结果总是随机的。我不明白为什么。请帮我。

我认为这与 node-sqlite3 的异步性有关。但后来我意识到我需要它是异步的。

在更好的sqlite3

0 投票
1 回答
1151 浏览

node.js - 无法安装更好的sqlite3

我曾尝试进行 node-gyp 重建并安装所有依赖项,但仍然没有任何工作是我的错误

我已经尝试做它所说的一切,但没有任何效果我想使用 better-sqlite3 来存储我的不和谐机器人信息,但如果我们无法解决这个问题,我将只使用 MySQL

0 投票
1 回答
1079 浏览

javascript - 需要解决“节点内存不足”错误的方法

我正在解析 ~250K XMLs 并将数据加载到 SQLite 数据库中。我在具有 8GB 内存的 Mac OS X 笔记本电脑上cheerio使用节点版本 10.15.1。better-sqlite3我正在readdirSync处理约 250K 文件的整个文件夹,并解析 XML 文件并使用 10K 批次的事务加载提取的数据。我正在使用--max_old_space_size=4096但仍然收到FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

现在,如果我处理 100K 文件,然后退出节点,然后重新启动并处理剩余的 ~150K 文件,那么一切正常。但是,我宁愿一次性完成,因为这是必须在无人看管的情况下完成的事情。考虑到我的限制,我还能做些什么吗?我无法使用内存更大的机器,因为我无权访问。我可以尝试增加--max_old_space_size一点,或者我可以尝试做小批量的交易,但我不确定这是否会有所帮助(我尝试了每个交易 8000 个文件而不是 10K,但这也耗尽了内存)。现在唯一似乎有帮助的是在两者之间退出节点。反正我可以模拟吗?也就是告诉node释放所有内存,假装重启了?还有其他想法吗?

0 投票
1 回答
3352 浏览

reactjs - 构建一个支持 React Web 应用程序和问题的 SQlite/PouchDB?

我的目标


创建一个 React JS WEB APP,它可以通过Service Workers离线工作,并且可以在没有任何后端的情况下查询 SQlite 文件。我正在运行 Linux 操作系统。

问题


我正在为 React Js Web 应用程序上的 SQlite 使用而苦苦挣扎。我正在使用create-react-app并尝试查询 SQlite 数据库。

从 sqlite3 开始

我不能将sqlite3完全安装为 npm 包,因为它需要一个名为aws-sdk的依赖项,并且在安装此包后,它会输出以下内容:

然后......我继续寻找另一个支持sqlite的库,比如better-sqlite3

Better-Sqlite3

导入better-sqlite3后,这是我的浏览器屏幕上的输出:

我不知道这应该是什么意思。库的故障排除部分没有任何内容,因此无法调试。

Kripken 的 Sql.js

让我们尝试一些内置的 Javascript 和轻量级的东西。

哦,不,我的内存堆刚刚在试图编译它时爆炸了:

好吧,忘记 sqlite 库,让我们试试 PouchDB!

当前解决方案


PouchDB

所以,在所有这些混乱之后,我已经放弃了使用 SQlite 库并尝试了一些离线友好的东西:Pouch DB。我坚信可以将 SQlite 文件加载到 Pouch。

所以我问了这个问题:在 React App 中加载带有或不带有 PouchDB 的预构建 SQlite 数据库的正确方法是什么

不,这是一个 noSQL 数据库,这是不可能的……

然后我不得不将我所有的 SQlite 数据库转换为 .json 文件,这一切都是手动完成的......

接下来,让我们创建数据库并从 .json 文件中导入数据。

编辑1:

我的 SQlite 文件每张表有接近 5k 的注册表。因此,我从 SQlite 表转换的每个 .json 文件都有 5 k 个对象或文档,如您所愿。其中有 19 个 .json 文件,每个代表一个表。

AAAAND ...我需要在 .json 文件(表)之间进行更改以进行查询,但是在文件转换之后,没有 _rev 属性,所以每次我使用 bulkDocs 加载注册表时,表之间都会发生冲突,因为他们缺少 _rev 属性。

这是我的数据库服务的代码:

文档示例:

表格1:

表 2:

在第一次 (dbLoad(Table1)) 调用中,所有文档都被加载,_rev 属性在第一个表中创建。

当我使用 Table2.json 进行另一个调用 (dbLoad(Table2)) 时,它们会发生冲突,因为新文件缺少 _rev 属性,并且当 Pouch 创建此属性时,它们是相同的

编辑2:

我试图将我的代码修改为:

.json 文件位于加载函数的同一目录中,但它不加载数据。

所以我坚持使用 bulkDocs 版本。

问题

对于很长的帖子,我很抱歉,在所有的上下文化之后,出现了问题:

  • 是否有可能在 React Web App 环境 中设置sqlite库?
  • 并且没有任何后端?
  • 在我的 .json 表之间切换的推荐方式是什么?
  • 我应该删除存储的前一个并加载下一个吗?
  • 或手动加载每个表,然后使用袋转储cli?

我希望一切都得到很好的解释,我很乐意澄清您可能遇到的任何问题。

感谢您的时间!

可能的答案


好的,所以我能够通过创建这样的代码来解决我的问题。

其中 switch 语句是表的名称并返回表文档,用于在 IndexedDB 上插入。对于每个 .json 文件,我正在创建一个新的数据库,然后进行查询,因为我正在使用 React,我正在将数据库的引用保存在组件状态上。

我认为每次我在表之间更改时都缺乏优化,我正在调用使用 bulkDocs 的函数。也许我应该检查表是否已插入 IndexedDB。

0 投票
1 回答
4165 浏览

sql - 使用 Node.JS 更新 SQL (better-sqlite3) 中的值

我目前有一个包含每个人的人的数据库,他们拥有一个状态值。我正在尝试更改他们的状态值。

我不断收到错误,db.query is not a function但对于我尝试的每个功能,我都会得到这个错误。

update对 SQL 来说很新,但只是想弄清楚这一点或任何对我有帮助的文档,因为 better-sqlite3在官方文档中没有任何功能。

0 投票
0 回答
50 浏览

node.js - 如何停止在sqlite中加载额外的行

我有一个带有nodejs和php的聊天系统,当用户点击一个房间时,聊天是从sqlite数据库中的nodejs获取的

req.body.ll.toString()是有固定限制的聊天室的id。因此,当用户在聊天顶部滚动时,会从 nodejs 中的全新请求加载更多聊天,限制以数字形式保存在客户端,从限制中获知最后一次聊天并获取时间戳最后一次聊天,然后获取该时间之前的所有聊天。

但是如果用户滚动两次以上,聊天会再次加载并重复,那么有没有办法跟踪聊天以检查聊天数是否等于数据库中的聊天,然后聊天不会再次加载用sqlite?我正在使用better-sqlite作为与数据库通信的库