问题标签 [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 投票
0 回答
52 浏览

npm-install - 在 NPM 中安装 sqlite3 的问题

所以我只是在一台新机器上设置我的 Discord 机器人。我在 LTS 中使用了最新的 Node 版本,并安装了 Windows Build Tools。

但是npm install,在安装 sqlite3 包之前,一切都很顺利。我这里有一个日志供参考:https ://pastebin.com/ktJ8VyZY

另一个直接来自 PowerShell 的日志:https ://pastebin.com/d232rjJY

在我遇到 Python 问题并且已经解决之前,但现在我无法准确指出问题出在哪里,我一直在阅读与此相关的所有行gyp,问题对我来说并不是很清楚,所以如果有人可以,我就在这里查明确切的问题以及解决问题的方法。

谢谢你。

Package.json 如果需要:https ://pastebin.com/ACh0mQRe

0 投票
1 回答
36 浏览

node.js - 如何在实时应用程序上访问我的 SQLite3 数据库?

所以基本上我有一个用于 Discord Bot 的 SQLite3 数据库。在托管和运行应用程序时,我是否可以访问我的数据库文件以检查其中的内容?

我认为可能可以从我用来访问虚拟主机的终端中的命令行执行此操作,但我不知道从哪里开始/输入什么。

理想情况下,出于视觉目的,我希望能够查看程序内部的文件DB Browser for SQLite,但对于初学者来说,我想知道是否可以远程查看实时更新的数据库,因为我的应用程序托管在虚拟主机/机器上。

0 投票
0 回答
49 浏览

javascript - 当我在回调函数中时,有人可以解释我如何访问变量值吗?

我有这个函数,只要用户向机器人键入“/play”或“/register”,它就会被调用,它用于查询数据库,如果用户已经在数据库中存储了他的数据。

我试图让这个函数返回真或假,但它不能正常工作..它总是返回假。

希望有人能解释一下为什么,提前谢谢![我为我糟糕的英语道歉]

我尝试将“let res = false”设置为全局变量,并在回调函数中更改其值(这有效,但仅在第一次执行该方法时[不知道为什么,如果有人可以向我解释这个])。

我试图在“isRegistered”函数中初始化变量(如您在下面的代码中所见),但在回调函数中似乎无法访问该变量。

我期待回调函数改变“res”变量的值。

我尝试了下面的代码,这是使它工作的唯一方法。我不明白为什么......我很绝望

0 投票
1 回答
181 浏览

node.js - 如果表中的行存在,如何转义当前的 SQLite3 查询,但如果不存在则继续

所以我集成了我的Discord.JS机器人,SQLite3并添加了一个功能,用户可以在表格中存储他们的 ID 和用户名。目前,如果用户的 ID 和名称在表的一行中不存在,我只会在表中创建一个新行,如果数据不存在则创建一个新行。我想知道的是,如果行确实存在,是否有办法从查询中抛出一些东西,并且让我能够抓住它,然后做其他事情。

我已经尝试过if..else声明,但我想知道是否有更简单的方法来实现这一点。

这就是我目前所拥有的,其功能如上所述。

理想情况下,如果该行确实存在,message.reply('Added the user to the database.');则不会执行,而是继续执行message.reply('That user already exists within the database');但如果该行不存在,则插入行和数据,并且仅继续执行message.reply('Added the user to the database.');

0 投票
1 回答
1380 浏览

javascript - DiscordJS 数据库不理想地存储信息

我试图让 Discord 机器人在收到 !getdata 命令时创建一个数据库,该数据库基本上是用户映射(每个用户一行,ID、昵称、头像 URL 等列)。

我已经到了数据库成功获取数据的地步,在这种情况下是用户名和用户 ID,但它在两列中显示所有唯一值作为长逗号分隔值(即用户名列显示'user1,user2,user3 ')。

我确信这是设计使然,但我真的在为重组而苦苦挣扎。我想让它从对象映射(client.users 或 message.guild.members)中获取所有数据,但我无法弄清楚。

我现在正在尝试的另一个选项是为每个用户创建一行,然后填写我想要存储的值,但我没有快速获得任何结果。

我对 SQLite(以及 node/DiscordJS/JS)非常陌生,因此非常感谢任何建议。

索引.js

如果您对格式或编写方式感到好奇,答案有两个:

  1. 我对此很陌生
  2. 这是我可以让数据库中的值返回 null 以外的值的唯一方法

提前致谢,

0 投票
1 回答
287 浏览

node.js - 无法使用 Node.js 从 SQLite 数据库中检索新值

我正在使用 Node.js 和 SQLite3 来与我的数据库通信。我可以成功添加新数据并读取现有数据。我的问题是,除非我重新启动 Node.js 服务器,否则我无法检索通过界面添加的数据。

我意识到数据库可能已被锁定,或者需要更改重新读取新数据的功能,但我终生无法弄清楚如何操作。

请原谅代码,它旨在跟踪随着时间的推移已挤出多少牛奶并绘制图表。

服务器.js

数据库.js

lastAmountLeft 和 LastAmountRight 需要更新但不需要。(我也在我的 html 页面中使用它们的值)

0 投票
0 回答
615 浏览

python - NPM 重建阻止程序

我在我的 pi 上运行 raspbian,当我运行“npm rebuild”以使我的 npm 安装的 node-red 节点包出现在我的 node-red 界面上时。当我运行“npm rebuild”时,它会进入一个永无止境的 makefile 以尝试从源代码构建(或者至少持续了一个多小时而没有明显进展):

简而言之,我不能使用 contrib-nodes 因为 sqlite 不会加载——这是解决我的问题的理想解决方案。

当我运行“sudo npm rebuild”时,我遇到了错误:

如果有帮助,我会在以后的评论中附上调试日志。

我试过按照这里的建议: bcrypt@1.0.3 install: `node-pre-gyp install --fallback-to-build`

在这里: npm 重建期间 npm-gyp 出错

在这两种情况下,这意味着遵循所有建议,包括找到正确的 python 版本并尝试通过 python 框架路由命令(尝试在 python 中运行 npm)

除了登录 aws 以尝试下载构建二进制文件 4.0.9,我还使用 nvm 安装节点 v10.16.0、v8.16.0 和 v12.4.0 并在所有三个框架上运行“npm rebuild”以几乎相同的输出

我希望“npm rebuild”允许我使用 sql 节点和 telegrambot 节点,这样我就可以通过它获得一些基本流程,以便我的演示即将推出。

0 投票
0 回答
509 浏览

node.js - 在 yocto 中使用交叉脚本为 node-sqlite3 交叉编译包?

我的 yocto 设置有 nodejs 配方。哪个工作正常。我正在尝试通过添加新配方来交叉编译 node-sqlite3 包。node-sqlite3 依赖于 node-gyp 脚本。脚本使用命令节点(机器图像)。

构建设置尝试使用主机路径而不是机器映像路径。

节点-sqlite3.bb

猫节点gyp

配置、编译时应考虑以下二进制路径。

  1. node-gyp 脚本是从主机工具而不是图像目录中使用的。
  1. node-gyp 脚本使用 node 命令编译 scipts,构建配方无法指向图像二进制路径。

但我收到以下错误。

如何解决以上问题?node-sqlite3.bb 配方中需要纠正或包含哪些步骤?

0 投票
0 回答
71 浏览

node.js - 如何更改 node-Sqlite3 默认选项

我在我的电子项目中使用 sqlite3。

为了实现我从官方网站引用的多线程,他们告诉“当使用 SQLITE_THREADSAFE=2 编译时,只要没有两个线程尝试使用相同的数据库连接,SQLite 就可以在多线程程序中使用”

我正在创建这样的数据库

那么如何在我的代码中传递多线程配置?

0 投票
1 回答
407 浏览

node.js - 如何在 node.js 中向 SQlite3 表添加 NOT NULL 外键

我在将外键列添加到 SQLite 上已经存在的表时遇到了一些麻烦。

这是我的 SQL 代码:

这给了我以下错误:

但是,如果我删除“NOT NULL”约束它运行良好:

以下也可以正常工作,但我已经有一个现有的表:

我是否遗漏了某些东西,或者它不能在 SQLite 中制作?