Javascript 通过web扩展本地消息传递API在本地使用SQLite

Javascript 通过web扩展本地消息传递API在本地使用SQLite,javascript,sqlite,firefox-addon-webextensions,Javascript,Sqlite,Firefox Addon Webextensions,我正在寻找一种访问大于indexedDB 2GB限制的本地数据库的方法,并想知道是否可以使用web扩展的本机消息传递API与本地存储的SQLite数据库通信。如果是这样,这是否需要在扩展和SQLite之间使用一个中间程序,或者扩展的本机消息传递API是否可以直接与SQLite通信 我从未使用过SQLite;所以,这可能是一个非常愚蠢的问题。我在想,我的JS文件中的indexedDB事务可以替换为本地消息传递,以请求数据或将数据传递给SQLite文件 似乎用户必须为他们的操作系统安装SQLite,

我正在寻找一种访问大于indexedDB 2GB限制的本地数据库的方法,并想知道是否可以使用web扩展的本机消息传递API与本地存储的SQLite数据库通信。如果是这样,这是否需要在扩展和SQLite之间使用一个中间程序,或者扩展的本机消息传递API是否可以直接与SQLite通信

我从未使用过SQLite;所以,这可能是一个非常愚蠢的问题。我在想,我的JS文件中的indexedDB事务可以替换为本地消息传递,以请求数据或将数据传递给SQLite文件

似乎用户必须为他们的操作系统安装SQLite,并下载我提供的SQLite数据库。此外,我还需要创建一个可以与数据库通信的文件,浏览器可以通过扩展API与之通信

多谢各位



经过一段时间的研究,为了它的价值,我想我应该和大家分享一下,因为在我刚开始的时候很难找到这个基本的概述。我在本机应用程序中使用C,这使得使用SQLite变得相当容易,从某种意义上说,用户可以用自己的C应用程序编译SQLite合并文件,这样用户就不必安装本机应用程序以外的任何东西。如果您不知道,就像我不知道的那样,数据库是一个平面文件,不需要服务器。非常方便。因为我对C语言不是很在行,所以这不是最容易学的东西,但这也不是不可能的,即使对于像我这样的黑客来说也是如此。我尝试了本地服务器路由,但也不喜欢。我对此也不太了解,但为了获得与将准备好的语句保存在内存中相同的效果,必须在本地服务器的数据库中使用存储过程(我使用的是MariaDB);否则,每次调用时都必须重新准备准备好准备好的语句,因为运行它们的脚本在完成后关闭。可能还有另一种我不知道的方法,但SQLite也让这变得很容易,因此可以使用相同的准备好的语句重复运行频繁使用的查询,并将新参数绑定到它们。有一点需要学习,但我发现这是一个很好的解决方案。由于与扩展通信的唯一方式是通过JSON字符串,因此在C中解析和构建它们可能有点困难;但是,如果您知道如何通过SQLite的JSON扩展和内置聚合函数来构建查询,那么您可以在查询结果中构建查询,而不是在额外的C代码中构建查询。这会伤我的头,但是,如果你明白了,它相当强大。

你需要编写一个实用程序,你的扩展将通过nativeMessaging与之通信,该实用程序将直接使用sqlite或将请求转发到任何其他sqlite服务器。或者,您可以安装一个本地sqlite服务器,该服务器将自己暴露在某个本地主机端口上,扩展可以通过XHR/fetch连接到该端口,而无需使用nativeMessaging。感谢您的解释。如果可能的话,我将尝试在没有本地服务器的情况下完成它。用户是否需要安装SQLite,或者可以将其打包到实用程序中?谢谢。因为你可以用任何语言编写这个实用程序,这完全取决于你自己。