Firestore 模拟器不显示数据

Coo*_*kid 5 firebase firebase-tools google-cloud-firestore

我正在尝试将我的模拟器 firestore 数据库与我的网络应用程序连接起来。奇怪的是,我能够使用模拟器身份验证和模拟器存储分别创建用户和上传文件,但是当我尝试将数据推送到 firestore 模拟器时,什么也没有发生,因为模拟器中没有显示任何内容,并且执行时没有任何错误代码。

我可以看到Requests如下内容,但Data模拟器中什么也没有。 在此输入图像描述 在此输入图像描述

任何帮助,将不胜感激。

编辑:添加更多代码片段

import { initializeApp } from "firebase/app";
import { connectAuthEmulator, getAuth } from "firebase/auth";
import { connectFirestoreEmulator, getFirestore } from "firebase/firestore";
import { connectFunctionsEmulator, getFunctions } from "firebase/functions";
import { getAnalytics } from "firebase/analytics";
require("firebase/storage");
import { getStorage, connectStorageEmulator } from "firebase/storage";

// TODO: Add SDKs for Firebase products that you want to use
// https://firebase.google.com/docs/web/setup#available-libraries

const hostname = window.location.hostname;
console.log("hostname: ", hostname);
const app =
  hostname === "localhost"
    ? initializeApp({
        apiKey: process.env.REACT_APP_APIKEY,
        authDomain: process.env.REACT_APP_AUTHDOMAIN,
        projectId: process.env.REACT_APP_PROJECTID,
        storageBucket: process.env.REACT_APP_DEMOSTORAGEBUCKET,
        messagingSenderId: process.env.REACT_APP_MESSAGINGSENDERID,
        appId: process.env.REACT_APP_APPID,
        // measurementId: process.env.REACT_APP_MEASUREMENTID,
      })
    : initializeApp({
        apiKey: process.env.REACT_APP_APIKEY,
        authDomain: process.env.REACT_APP_AUTHDOMAIN,
        projectId: process.env.REACT_APP_PROJECTID,
        storageBucket: process.env.REACT_APP_STORAGEBUCKET,
        messagingSenderId: process.env.REACT_APP_MESSAGINGSENDERID,
        appId: process.env.REACT_APP_APPID,
        measurementId: process.env.REACT_APP_MEASUREMENTID,
      });

// REACT_APP_DEMOSTORAGEBUCKET

export const auth = getAuth(app);
export const db = getFirestore(app);
export const storage = getStorage(app);
export const functions = getFunctions(app);
export const analytics = () => {
  if (hostname === "localhost") {
    return;
  } else {
    return getAnalytics(app);
  }
};

if (hostname === "localhost") {
  connectAuthEmulator(auth, "http://localhost:9099");
  connectFirestoreEmulator(db, "localhost", 8080);
  connectStorageEmulator(storage, "localhost", 9199);
  connectFunctionsEmulator(functions, "localhost", 5001);
}
Run Code Online (Sandbox Code Playgroud)

用于模拟器的细节与实际环境的细节基本相同,区别只是从 开始firebase emulators:start --project=demo-project。我使用一个实时但不同的存储桶,以便第三方可以访问我的图像。我过去使用过的所有这些设置都有效,例外是最近当我尝试查看 Firestore 数据时。

小智 0

在我们解决您可能遇到的问题之前,请先了解几件事。确保所有提供程序均已配置且取消注释 ( app module) 然后,您需要运行:

$ firebase emulators:start
Run Code Online (Sandbox Code Playgroud)

一旦停止运行模拟器,数据就会消失,因为数据位于本地内存中。 现在,如果您想在重新开始时保留数据,则需要将其导出。因此,当您的模拟器运行时,请执行以下操作:

$ firebase emulators:export my-test-data
Run Code Online (Sandbox Code Playgroud)

这将创建xml包含所有导出数据的文件,因此稍后当我们启动模拟器时我们可以再次使用它。它还将创建my-test-data文件夹。现在,要使用数据运行:

$ firebase emulators:start --import my-test-data
Run Code Online (Sandbox Code Playgroud)

此时,数据应该可用于您的开发环境。现在您应该可以看到您的数据。我希望它有帮助!