问题标签 [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 - `node-sqlite 每个函数是否将所有查询加载到内存中,或者它使用来自硬盘的流/管道
我想处理 10,000,000 行
这是我的代码:
问题是:它会吃掉我所有的内存,还是会一行一行地从硬盘读取?
node.js - Nodjs Sqllite3 不刷新到磁盘
我遇到了 sqlite3 无法刷新到磁盘的问题。我正在使用的代码如下。我的总文件列表超过 470k,并且该程序倾向于使用几 GB 的内存。程序运行时 test.db 为 0 字节,不使用日志。它仅在运行时才开始写入磁盘 db.close()
。
我曾尝试删除db.run("BEGIN;");
, db.run("COMMIT;");
但没有帮助。
漏洞?
我将此报告为 github 上的错误
node.js - 如何从事务中获取 last_insert_rowid?
我正在尝试使用 node-sqlite3 从我的 node.js 应用程序在数据库中执行 INSERT + UPDATE 事务。但是,我无法弄清楚事务完成后如何获取 last_insert_rowid。我的查询看起来像这样:
这个字符串(减去额外的空格)被分配给 var q
。
我在某个时候使用这个打开了我的数据库:
但如果我尝试使用:
它不仅没有错误地打印“0”,而且不会对数据库进行任何更改!!!如果我使用exec
而不是run
查询成功运行,但我无法从 exec 获取任何数据。
我也尝试过这样的事情:
但是“run”上的“this”上下文没有 lastId 属性!
我还查看了 sqlite3-transaction 包,但它似乎也没有在事务回调中提供任何信息!
我不能将插入作为单独的 run() 运行,获取this.lastId
然后使用它来运行更新,因为这将使数据库在两个语句之间处于无效状态(因此需要事务)。
如何从此事务中获取 last_insert_rowid()?
javascript - 使用 sqlite3 在 node.js 中变量的有效性
我在 node.js 中的 sqlite3 上做了一个 select 语句。我希望在 sqlite 代码块之外定义的变量“数据”中得到结果,但它保持为空。在 sqlite 代码块中,数据变量具有正确的值。有人知道我做错了什么吗?
谢谢你。
node.js - sqlite3 db.close() 在 db.serialized() 完成之前调用
我有一个 sqlite3 嵌套查询案例。希望将每个查询结果推送到 json 数组并将其返回。但是对于第二次选择调用,总是得到“错误:SQLITE_MISUSE:数据库句柄已关闭”。似乎 db.close() 在第二个查询之前被调用。
为什么会这样,我认为序列化可以解决这个问题。请问如何解决?
javascript - 使用正确的数组响应 HTTP 请求时出现问题。使用expressjs从函数内部发送结果的可能方法?
问题摘要:所以我正在开发一个在后端有一个 SQL 数据库的程序,并且我正在使用 npm SQLite3 模块与之交谈。当我向服务器发出 HTTP 请求时,我在另一篇文章中被告知我应该对res.send
其中的函数执行操作,因此在函数运行后,它将返回来自函数的任何内容。够容易吧?但后来我遇到了一个异步函数的问题.all
(API Doc here)。基本上发生的事情是我调用我的数据库并将里面的所有内容返回到 database.all 中的一个对象,但是 database.all 是一个异步函数,它是无效的并且不能返回任何东西。我有一个在回调中发送对象的回调,但我不知道从那里如何处理它,或者我什至需要一个回调。
所以我的问题是:我可以从我的.all
函数或回调中的某个地方发送 HTTP 响应,还是我的函数必须将数组返回到它被调用的位置?下面的代码向您展示我的意思。
我已经设置了一个角度控制器来在我的页面加载时发送以下 HTTP 请求:
当服务器(server.js)收到它时,我这样做:
它在另一个名为 test.js 的文件中运行 loadWaitingList() 函数:
这叫updateDB.Manager
,又名这个人:
所以最后我们可以看到,在db.all
运行之后,我在row
. row
作为参数传入db.all
并作为数组返回,我尝试在外部声明它db.all
并将其传入然后打印出结果,但由于db.all
是异步的,它总是出现空,因为函数尚未运行。
当我在调用回调后运行回调并检查对象(使用 vscode 调试器)时,returnRow
其中包含来自我的数据库的正确数据。
如何发送被放入row
并最终returnRow
作为响应返回的数据?当我们以不同的方式获取 HTTP 请求然后res.send
从回调或其他方式中执行时,是否可以执行初始函数调用?
sql-server - nodejs 使用 node-mssql 连接 mssql
我尝试使用 node-mssql( https://github.com/patriksimek/node-mssql/issues ) 来连接 mssql。这是我的配置:
这是我的连接代码
这是我的错误: (intermediate value).query(...).then 不是函数。
我不知道为什么会这样!!
有人帮助我!
node.js - Node.js、Express.js 和 sqllite3.js
我对 Node.js 中的对象属性有疑问。虽然在测试对象中按预期设置了属性,但对我的文章对象也不起作用。我看到的区别是文章的函数是异步调用的。我必须承认我有点失落......
这是app.js,它实例化了测试对象和文章对象。
这是我相当简单的 test.js :
这是我相当简单的 article.js :
node.js - 如何要求具有 sqlcipher 支持的 node-sqlite3
我有一个需要node-sqlite3包的包。但是,它还需要使用 sqlcipher 支持构建 node-sqlite3,否则我的包将无法正常运行。
我正在使用以下方法安装 node-sqlite3:
但是,当我完成并查看我的 package.json 时,它只是说:
没有提及 sqlcipher 要求。如果我天真地尝试使用此要求安装我的包,它不会使用 sqlcipher 支持构建,并且我的应用程序会失败,因为它无法读取 sqlcipher 加密数据库,即使存在正确的密钥!
此外,在不同的平台上,不能保证 sqlcipher 会安装在同一位置,尽管为了使问题更简单,我们可以假设它已经构建并存在于某个地方。
如何正确指定此依赖项要求?
node.js - `db.serialize` 在 `node-sqlite3` 中如何工作
最近在学习使用 node 和node-sqlite3来操作 sqlite3,这里有一个示例。
文档说这db.serialized
是用来确保 SQL 行按顺序执行的,但我很困惑,为什么不按顺序执行db.serialize
,毕竟它们会从事件队列中拉出并按顺序执行?它是如何在这里工作的?
而如果只有一个sql要执行,不db.serialize
按如下方式运行是否安全?