Firefox 扩展 - 数据库访问

Firefox Extension - Database access

我想制作一个可以从数据库存储和检索数据的 Firefox 扩展。但是,我一直在寻找适合每个用户在本地使用的解决方案。我希望每个用户都可以访问同一个数据库。

这可能吗?

一点小建议。如果您与它无关,请随意忽略它。你的问题听起来很普通。你应该先自己学习和做,只有当你遇到具体问题时才在这里问。

“本地”,我想你的意思是通过 Web SQLIndexedDB。它们被称为本地数据库,它们的行为与您正在寻找的完全不同。

我不需要告诉你这样做。以防万一。当然,首先你需要知道网站是如何在前端和后端工作的,而不仅仅是本地的东西,尤其是它们之间是如何通信的。所以你应该了解 HTTP 请求,Javascript 和 AJAX.

它与 Firefox 扩展有什么关系?。不仅仅是 Firefox,浏览器扩展只是另一种类型的网页,它覆盖在各种浏览器中打开的网页。在 Firefox 中,打开的页面称为 activeTabs。与普通网页的唯一区别是您需要先注册您的帐户,manifest.json 文件作为您的项目根文件,并从命令行编译 web-ext 工具。如果您面临 Cross-origin 资源共享 (CORS) 限制,请按照说明 HERE 并在服务器端允许 URL。

可以使用 node.js 模块访问远程 SQL 数据库,如 MySQL 和 PostgreSQL,但创建 REST API 前端到您的数据库并从扩展中调用它们。直接在您的 Web 扩展中公开 SQL 调用不是一个好主意。这基本上是一种糟糕的安全做法,会将您的数据库暴露给黑客。

如果您要分发 publicly,您还需要您的插件通过 Mozilla 的批准流程,我怀疑审阅者是否会乐于在您的扩展程序代码中看到原始 SQL 调用。

更明智的更新数据库的方法是通过 REST API 前端。

有关如何为 Postgres 数据库创建 REST API 的简单示例,请访问 Node.js, Express.js, and PostgreSQL: CRUD REST API example - LogRocket Blog and this playlist show how to create a REST interface in a Firefox extension - Build a Firefox Extension from Scratch that integrates with Node.js - DEV Community

上面的数据库例子很简单。对于现实世界的使用,您需要为您的 API 使用更高级的 REST 框架,该框架在将数据插入数据库之前对其进行清理。你还有更多的阅读要做。

但是,如果您需要 直接从您的分机拨打 SQL 电话(我仍然不建议),您可以包含一些来自 node.js 的软件包在您的网络扩展中,并使用 browserify 将所需的模块提取并打包到您的扩展中。不过,您的插件最好供私人或 in-house 使用,而不是 public 分发。

一些用于数据库访问的 nodejs 模块是 - https://github.com/mysqljs/mysql, https://node-postgres.com/ and https://www.npmjs.com/package/pg.