在电子应用程序中处理SQLite3查询的正确方法是什么?

时间:2019-07-12 09:10:54

标签: javascript node.js sqlite electron

我正在尝试在我的Electron应用程序中实现SQLite3,以便在应用程序关闭(Electron的“ close”事件)和来自API的用户数据时保存用户首选项。该API数据可以随时从脚本的各个部分到达,并且需要保存。有问题的错误是 sqlite_busy:数据库已锁定

我尝试将SQLite3的方法包装在一个保证与单独的模块中的'async / await'一起使用的承诺中,但这只能使我走远。

  • 如何实现它以便保存API数据而不会遇到“锁定”问题?
  • 如果应用在查询完成前崩溃或关闭该怎么办?
  • 是否需要查询队列
// const queue = [];
// push query to the queue
// loop to check if the queue has a query to handle
// execute the query and remove it from the queue

1 个答案:

答案 0 :(得分:0)

我正在使用 Knex库来管理SQLite数据库以及所有操作,包括迁移。您可以在https://knexjs.org/

处获取所有信息表格

database is locked问题而言,您可以使用Transaction方法维护与Knex的并发性,这可以帮助您克服这种情况。您可以查看有关如何实施交易查询的更多详细信息。 https://knexjs.org/#Builder-transacting