firebase 如何在AngularFire中访问非默认Firestore数据库

l7wslrjt  于 7个月前  发布在  Angular
关注(0)|答案(1)|浏览(77)

我试图访问gcloud项目中的另一个firestore数据库。我可以访问默认数据库(默认),但我有一个名为“development”的数据库无法访问,并且在网上找不到任何关于如何访问它的文档。
当我得到我的初始firebase配置,它不包括一个databaseURL,但我已经添加了一个尝试和访问数据库,但它不工作。

export const firebaseConfig = {
  apiKey: <apiKey>,
  authDomain: <authDomain>,
  projectId: <projectId>,
  storageBucket: <storageBucket>,
  messagingSenderId: <messagingSenderId>,
  appId: <appId>,
  databaseURL: "https://firestore.googleapis.com/v1/projects/<projectId>/databases/development/",
  measurementId: <measurementId>,
  databaseId: "development",
};

export const environment = {
  production: false,
  firebaseConfig: firebaseConfig,
  databaseName: 'development',
};

// From looking at the docs, the default databaseURL would be "https://firestore.googleapis.com/v1/projects/<projectId>/databases/(default)/"

字符串
我正在像这样导入我的app.module

AngularFireModule.initializeApp(environment.firebaseConfig,),
AngularFirestoreModule


我也试过

AngularFireModule.initializeApp(environment.firebaseConfig, {name: environment.databaseName}),


AngularFireModule.initializeApp(environment.firebaseConfig, environment.databaseName),


如果我在Web浏览器中访问数据库URL,它会显示
缺少路由头。请使用格式x-goog-request-params:project_id=pocketmechanic-2970f&database_id=development填写请求头。请参阅https://firebase.google.com/docs/firestore/manage-databases#access_a_named_database_with_a_client_library了解更多详细信息。

f8rj6qna

f8rj6qna1#

我是这样做的,记住需要从compat模式重构,而使用模块化语法:

import { getApp, initializeApp, provideFirebaseApp } from "@angular/fire/app";
import { initializeFirestore, provideFirestore } from "@angular/fire/firestore";

@NgModule({
  imports: [
    provideFirebaseApp(() => initializeApp(config)),
    provideFirestore(() => {
      const app = getApp();
      const dbName = "db-name";
      const providedFirestore = initializeFirestore(app, {}, dbName);
      return providedFirestore;
    }),
  ]
})

字符串
在您的服务中:

import { inject } from "@angular/core";
import { Firestore, getDocs } from "@angular/fire/firestore";
import {
  collection,
  query,
  where,
  orderBy,
} from "@angular/fire/firestore";

@Injectable({
  providedIn: "root",
})
export class MyService {
  private firestore: Firestore = inject(Firestore);

  getUsers() {
    return getDocs(
      query(
        collection(this.firestore, "Users"),
        where("some_id", "==", "id"),
        orderBy("created_at", "asc")
      )
    );
  }
}


这也可以让你连接到多个数据库,并根据需要注入它们。

相关问题