将 MongoDB 与 Firebase 集成

Posted

技术标签:

【中文标题】将 MongoDB 与 Firebase 集成【英文标题】:Integrate MongoDB with Firebase 【发布时间】:2020-12-23 17:15:37 【问题描述】:

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

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

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

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

如果在我开始切换到 MongoDB 之前还有其他需要考虑的事情,请指出我。

【问题讨论】:

【参考方案1】:

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

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

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

总体而言,您将在架构中添加另一层。这是可能的,但需要您花时间进行设置,并且您会失去一些 Firestore 的好处,例如离线持久性。

【讨论】:

以上是关于将 MongoDB 与 Firebase 集成的主要内容,如果未能解决你的问题,请参考以下文章

将 FireBase 应用程序分发与 Jenkins 集成 - 任务“:app:appDistributionRelease”执行失败

如何将 Flutter Web 与 Firebase 集成? [关闭]

将 Firebase Crashlytics 与 Prometheus 集成

css 将Stripe订阅与firebase身份验证集成

将 Firebase 管理员与 Angular 4 项目集成

是否可以将 Stripe 与 Firebase 和 iOS 集成?