使用flutter如何在同一个App中使用多个firebase实时数据库

Posted

技术标签:

【中文标题】使用flutter如何在同一个App中使用多个firebase实时数据库【英文标题】:Using flutter how to use more than one firebase realtime database in the same App 【发布时间】:2019-12-10 14:04:47 【问题描述】:

我们正在使用 firebase 实时数据库在 Flutter 中开发应用程序,为不同的客户提供多种服务。我想为每个使用相同 firebase 项目的客户提供不同的数据库。由于 firebase 在同一个项目中支持多个数据库,我相信可以使用 FirebaseDatase 插件来实现。

我尝试设置对辅助数据库的引用,但我找不到一个解决突击队来更改此数据库的实例。如果您使用 Java 或其他使用 Firebase SDK 的语言,这非常简单,但我找不到使用 Flutter 的方法。

Future<DataSnapshot> getDbData(String dbChildPath) async 
DataSnapshot _objdatabase;
try 
  await FirebaseDatabase.instance
      .reference()
      .child(dbChildPath)
      .once()
      .then((DataSnapshot snapshot) 
    _objdatabase = snapshot;
    print(_objdatabase.toString());
  );
  return _objdatabase;
 catch (erroDB) 
  print(erroDB);
  return null;

我的代码正在从默认数据库中获取数据。

如何设置辅助数据库实例的 URL?

请问有什么办法吗?

【问题讨论】:

【参考方案1】:

您可以使用 FirebaseDatabase() 的参数,如下所示:

String fdbUrl1 = "https://my-firebase-db-1.firebaseio.com"
String fdbUrl2 = "https://my-firebase-db-2.firebaseio.com"

final databaseReference1 = FirebaseDatabase(databaseURL:fdbUrl1).instance.reference();
final databaseReference2 = FirebaseDatabase(databaseURL:fdbUrl2).instance.reference();

注意:以上内容未经单元测试。它应该工作。以防万一,添加构造函数的'app'参数。

【讨论】:

仅供参考:firebase_database.dart 说 - /// 如果指定了 [app],则其选项应包含 [databaseURL]。【参考方案2】:

另一种方法是将您的客户 ID 放在您的子路径中,例如:

await FirebaseDatabase.instance
  .reference()
  .child(customer_id)
  .child(dbChildPath)
  .once()
  .then((DataSnapshot snapshot) 

虽然这不是每个客户的单个数据库。

【讨论】:

以上是关于使用flutter如何在同一个App中使用多个firebase实时数据库的主要内容,如果未能解决你的问题,请参考以下文章

Flutter中如何使用WillPopScope

如何从存储中选择多个图像并在 Flutter 和 Flutter Web App 中显示? [关闭]

教你如何使用Flutter和原生App混合开发

在 Flutter 中使用 Wi-Fi Direct 创建 P2P 连接

如何在 Flutter App 中正确使用 BlocListener 和 BlocProvider

如何在 Flutter 中使用填充“ISO10126”进行 AES 加密?