从 java admin sdk 连接到 firestore 模拟器

问题描述 投票:0回答:3

我正在尝试从我的 Java 应用程序内部连接到 firestore 模拟器,但没有成功。

FirebaseOptions options = FirebaseOptions.builder()
            .setCredentials(GoogleCredentials.getApplicationDefault())
            .setDatabaseUrl("localhost:8082")

            .setProjectId("xxx")
            .build();
    var app = FirebaseApp.initializeApp(options);

    Firestore db = FirestoreClient.getFirestore(app);
    final ApiFuture<WriteResult> update = db.collection("users").document().set(Map.of("test", "mest"));
    try {
        final WriteResult writeResult = update.get();
    } catch (InterruptedException | ExecutionException e) {
        e.printStackTrace();
    }

这只是尝试连接到 firebase,忽略数据库 url。

我看了一下node sdk,里面有

emulator
方法和数据库设置,但是Java端不存在

java google-cloud-firestore firebase-admin
3个回答
0
投票

根据文档

设置 FIRESTORE_EMULATOR_HOST 环境变量后,Firebase Admin SDK 会自动连接到 Cloud Firestore 模拟器:

导出 FIRESTORE_EMULATOR_HOST="localhost:8080"

所以我想你通过什么主机并不重要,只要这个环境存在?


0
投票

我对数据库链接有类似的问题 你可以试试

.setDatabaseUrl("http://localhost:8082")

对我有用。

后期编辑

使用

.setDatabaseUrl("http://localhost:8082?ns=fake-project-id")

缺少最后一部分会在 websockets 上引发其他错误。


0
投票

如果您正在使用Firebase Admin SDK(Java),您可以使用以下代码连接到Local Emulator Suite而无需设置FIRESTORE_EMULATOR_HOST环境变量:

import com.google.cloud.firestore.FirestoreOptions;
import com.google.firebase.FirebaseApp;
import com.google.firebase.FirebaseOptions;
import com.google.firebase.internal.EmulatorCredentials;

FirestoreOptions firestoreOptions = FirestoreOptions.newBuilder()
    /* 
      TODO: replace with host at which your emulator is running
    */
    .setEmulatorHost("localhost:8080")
    .build();

FirebaseOptions firebaseOptions = FirebaseOptions.builder()
    .setCredentials(new EmulatorCredentials())
    /* 
      setting valid project-id is IMPORTANT;
      otherwise, data will not be visible inside Emulator UI
    */
    .setProjectId("[YOUR_FIREBASE_PROJECT_ID]")
    .setFirestoreOptions(firestoreOptions)
    .build()

FirebaseApp app = FirebaseApp.initializeApp(firebaseOptions)
© www.soinside.com 2019 - 2024. All rights reserved.