簡體   English   中英

如何在 Flutter 應用程序中連接到本地實時數據庫模擬器?

[英]How do I connect to my local Realtime Database emulator in my Flutter app?

我正在為我的 Flutter 應用程序使用實時數據庫和函數。 我已經為數據庫和函數設置了本地模擬器,所以我可以在本地測試函數而無需部署成本。 現在我想將我的 Flutter 應用程序連接到這些本地模擬器,但是我在找出如何去做時遇到了一些麻煩。

FlutterFire 文檔描述了如何為 Firestore ( https://firebase.flutter.dev/docs/firestore/usage#emulator-usage ) 執行此操作,但不適用於實時數據庫。 即使我使用的是實時數據庫,肯定也必須有一種方法可以連接到模擬器嗎?

我嘗試了以下方法:

String host = Platform.isAndroid ? '10.0.2.2:4000' : 'localhost:4000';
    FirebaseDatabase database = FirebaseDatabase(
      app: Firebase.app(),
      databaseURL: host,
    );

但這給了我錯誤:

未處理的異常:PlatformException(錯誤,指定的 Firebase 數據庫網址無效:10.0.2.2:4000,空)

我在 pub 上使用 firebase_core 和 firebase_database 包。

根據適用於 Android 的 Firebase 文檔,使用實時數據庫模擬器需要調用database.useEmulator("10.0.2.2", 9000) 對 FlutterFire 代碼的快速搜索顯示沒有這樣的調用,所以似乎 FlutterFire 中還沒有實現模擬器的使用。

我也找不到它的未解決問題,因此您可能想要提交功能請求。

深入研究 Firebase Java SDK,我發現.useEmulator()僅設置用於創建databaseURL hostport ,簡而言之,它只是一個重構包裝器。

下面的代碼應該適用於 FlutterFire 實時數據庫包:

String host = Platform.isAndroid ? 'http://10.0.2.2:9000' : 'http://localhost:9000';
FirebaseDatabase database = FirebaseDatabase(
  app: Firebase.app(),
  databaseURL: host,
);

另外,請檢查您的firebase.json以獲取要使用的正確端口。 數據庫的默認值應該是9000

{
  "firestore": {
    "rules": "firestore.rules",
    "indexes": "firestore.indexes.json"
  },
  "functions": {
    "predeploy": [
      "npm --prefix \"$RESOURCE_DIR\" run lint",
      "npm --prefix \"$RESOURCE_DIR\" run build"
    ],
    "source": "functions"
  },
  "storage": {
    "rules": "storage.rules"
  },
  "emulators": {
    "auth": {
      "port": 9099
    },
    "functions": {
      "port": 5001
    },
    "firestore": {
      "port": 8080
    },
    "database": {
      "port": 9000
    },
    
    "ui": {
      "enabled": true
    }
  }
}

以下代碼對我有用。 它幾乎類似於@Florin Stan 的回答。 只是缺少數據庫的命名空間。

String host = Platform.isAndroid ? 'http://10.0.2.2:9000' : 'http://localhost:9000';
dbInstance= FirebaseDatabase(
    databaseURL: '$host?ns=YOUR_DATABASE_NAMESPACE',
);

數據庫命名空間可以在 firebase 實時數據庫模擬器 UI 中找到。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM