将 MongoDB 与 Firebase 集成

z00*_*00x 7 mongodb firebase flutter google-cloud-firestore

我有一个 Flutter 应用程序(仍在开发中),目前使用 Firebase 作为后端。更具体地说,我使用 Firebase 身份验证、存储、云功能、Firestore,将来我愿意使用远程配置、动态链接、云消息传递以及 Firebase 的更多功能。

我发现 Firestore 已经不足以满足我的目的:全文搜索、地理查询和一般高级查询。我知道我可以使用像Algolia这样的第三方服务,但它太贵了,而且我想要一些已经与我的数据库集成的东西。

我正在考虑开始使用 MongoDB 作为我的数据库(同时保留所有其他 Firebase 服务),但在此之前我需要了解最好的方法是什么。

  1. 我可以在Firebase Hosting上托管 MongoDB (我不知道这是否可能?),或者只是使用MongoDB Atlas并从我的应用程序直接访问它(请参阅我的下一个问题)?
  2. 将我的应用程序连接到 MongoDB 的最佳方式是什么?直接从应用程序(使用 Rest API)还是使用 Firebase Cloud Functions(这样我就不会公开我的数据库)?
  3. 我可以使用 Firebase 身份验证令牌访问 MongoDB 还是必须使用 MongoDB 的身份验证服务?

如果在开始切换到 MongoDB 之前我需要考虑更多事情,请指出给我。

Can*_*nar 8

  1. Firebase Hosting 是用于托管静态网站的 CDN。因此不可能托管像 MongoDB 服务器这样的应用程序。您无法在任何 Firebase 服务上托管 MongoDB。您必须将其部署到其他地方。有几种选择。您可以获取 VPS 并在其上安装 MongoDB 服务器。但是您必须管理自己的数据库,这可能很困难并且可能需要相当长的时间。另一种选择是使用云数据库,例如 MongoDB Atlas。这是一个更快、更安全的解决方案。然而,定价可能很高。所以你必须根据你的需求来决定。

  2. 一旦您拥有正在运行的 MongoDB 服务器,您需要为客户端应用程序编写一个 API 以进行安全通信。客户端应用程序永远不应该直接与数据库实例通信。在这种情况下,您可以使用 Firebase Cloud Functions 创建 api。

  3. 您可以将 Firebase Auth 服务与 Firebase Cloud Functions 结合使用。您应该查看 Firebase 可调用函数,它可以将身份验证上下文传递给函数体。在这里,您可以确保用户经过身份验证或根据您的授权需求执行一些访问控制逻辑。

总的来说,您将向您的架构添加另一层。这是可能的,但需要花时间来设置,并且您将失去一些 Firestore 的好处,例如脱机持久性。