Error consultando informacion de Firebase

Se esta haciendo el proceso de actualizacion de toda una aplicacion. Se realizo la configuracion de firebase indicada en la pagina (GitHub - angular/angularfire: The official Angular library for Firebase.), se realiza el login con exito. pero al intentar leer la informacion de una coleccion utilizndo (doc, collection) desde un servicio se retorna un error:
FirebaseError: [code=invalid-argument]: Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore
FirebaseError: Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore

Informacion de Ionic:
Ionic:

Ionic CLI : 7.1.1 (C:\Users\admin\AppData\Roaming\nvm\v18.17.1\node_modules@ionic\cli)
Ionic Framework : @ionic/angular 7.3.1
@angular-devkit/build-angular : 16.2.0
@angular-devkit/schematics : 16.2.0
@angular/cli : 16.2.0
@ionic/angular-toolkit : 9.0.0

Capacitor:

Capacitor CLI : 5.3.0
@capacitor/android : 5.3.0
@capacitor/core : 5.3.0
@capacitor/ios : not installed

Utility:

cordova-res : not installed globally
native-run : 1.7.2

System:

NodeJS : v18.17.1 (C:\Program Files\nodejs\node.exe)
npm : 9.6.7
OS : Windows 10

informacion Angular

Angular CLI: 16.2.0
Node: 18.17.1
Package Manager: npm 9.6.7
OS: win32 x64

Informacion packaje.json

{
“name”: “AppName”,
“version”: “0.0.1”,
“author”: “Ionic Framework”,
“homepage”: “https://ionicframework.com/”,
“scripts”: {
“ng”: “ng”,
“start”: “ng serve”,
“build”: “ng build”,
“watch”: “ng build --watch --configuration development”,
“test”: “ng test”,
“lint”: “ng lint”
},
“private”: true,
“dependencies”: {
@angular/animations”: “^16.0.0”,
@angular/common”: “^16.0.0”,
@angular/compiler”: “^16.0.0”,
@angular/core”: “^16.0.0”,
@angular/fire”: “^7.6.1”,
@angular/forms”: “^16.0.0”,
@angular/platform-browser”: “^16.0.0”,
@angular/platform-browser-dynamic”: “^16.0.0”,
@angular/router”: “^16.0.0”,
@capacitor/android”: “^5.3.0”,
@capacitor/app”: “^5.0.6”,
@capacitor/core”: “5.3.0”,
@capacitor/haptics”: “5.0.6”,
@capacitor/keyboard”: “5.0.6”,
@capacitor/status-bar”: “5.0.6”,
@fortawesome/angular-fontawesome”: “^0.13.0”,
@fortawesome/fontawesome-svg-core”: “^6.4.2”,
@fortawesome/free-brands-svg-icons”: “^6.4.2”,
@fortawesome/free-regular-svg-icons”: “^6.4.2”,
@fortawesome/free-solid-svg-icons”: “^6.4.2”,
@ionic/angular”: “^7.0.0”,
“firebase”: “^10.4.0”,
“ionicons”: “^7.0.0”,
“rxjs”: “~7.8.0”,
“tslib”: “^2.3.0”,
“zone.js”: “~0.13.0”
},
“devDependencies”: {
@angular-devkit/build-angular”: “^16.0.0”,
@angular-eslint/builder”: “^16.0.0”,
@angular-eslint/eslint-plugin”: “^16.0.0”,
@angular-eslint/eslint-plugin-template”: “^16.0.0”,
@angular-eslint/schematics”: “^16.0.0”,
@angular-eslint/template-parser”: “^16.0.0”,
@angular/cli”: “^16.0.0”,
@angular/compiler”: “^16.0.0”,
@angular/compiler-cli”: “^16.0.0”,
@angular/language-service”: “^16.0.0”,
@capacitor/cli”: “5.3.0”,
@ionic/angular-toolkit”: “^9.0.0”,
@types/jasmine”: “~4.3.0”,
@types/node”: “^12.11.1”,
@typescript-eslint/eslint-plugin”: “5.3.0”,
@typescript-eslint/parser”: “5.3.0”,
“eslint”: “^7.26.0”,
“eslint-plugin-import”: “2.22.1”,
“eslint-plugin-jsdoc”: “30.7.6”,
“eslint-plugin-prefer-arrow”: “1.2.2”,
“jasmine-core”: “~4.6.0”,
“jasmine-spec-reporter”: “~5.0.0”,
“karma”: “~6.4.0”,
“karma-chrome-launcher”: “~3.2.0”,
“karma-coverage”: “~2.2.0”,
“karma-coverage-istanbul-reporter”: “~3.0.2”,
“karma-jasmine”: “~5.1.0”,
“karma-jasmine-html-reporter”: “~2.0.0”,
“ts-node”: “^8.3.0”,
“typescript”: “~5.0.2”
},
“description”: “An Ionic project”
}

App.module

import { NgModule } from ‘@angular/core’;
import { BrowserModule } from ‘@angular/platform-browser’;
import { RouteReuseStrategy } from ‘@angular/router’;
import { IonicModule, IonicRouteStrategy } from ‘@ionic/angular’;
import { AppRoutingModule } from ‘./app-routing.module’;
import { AppComponent } from ‘./app.component’;
//TODO:Icons
import { FontAwesomeModule, FaIconLibrary } from ‘@fortawesome/angular-fontawesome’;
import { fas } from ‘@fortawesome/free-solid-svg-icons’;
import { far } from ‘@fortawesome/free-regular-svg-icons’;
import { fab } from ‘@fortawesome/free-brands-svg-icons’;
//TODO: Servicios
import { AuthenticationService } from ‘./services/authentication.service’;
import { CoreService } from ‘./services/core.service’;
import { EventsService } from ‘./services/events.service’;
import { FireBaseService } from ‘./services/fire-base.service’;
import { LocationTrackerService } from ‘./services/location-tracker.service’;
import { ManagementReportErrorsService } from ‘./services/management-report-errors.service’;
import { MsgService } from ‘./services/msg.service’;
import { NetworkService } from ‘./services/network.service’;
import { NotificationsService } from ‘./services/notifications.service’;
import { initializeApp,provideFirebaseApp } from ‘@angular/fire/app’;
import { environment } from ‘…/environments/environment’;
//Angular-Firebase
import { provideAuth,getAuth } from ‘@angular/fire/auth’;
import { provideDatabase,getDatabase } from ‘@angular/fire/database’;
import { provideFirestore,getFirestore } from ‘@angular/fire/firestore’;
import { provideFunctions,getFunctions } from ‘@angular/fire/functions’;
import { provideMessaging,getMessaging } from ‘@angular/fire/messaging’;
import { provideRemoteConfig,getRemoteConfig } from ‘@angular/fire/remote-config’;
import { provideStorage,getStorage } from ‘@angular/fire/storage’;

@NgModule({
declarations: [AppComponent],
imports: [
BrowserModule,
IonicModule.forRoot(),
AppRoutingModule,
FontAwesomeModule,
provideFirebaseApp(() => initializeApp(environment.firebase)),
provideAuth(() => getAuth()),
provideDatabase(() => getDatabase()),
provideFirestore(() => getFirestore()),
provideFunctions(() => getFunctions()),
provideMessaging(() => getMessaging()),
provideRemoteConfig(() => getRemoteConfig()),
provideStorage(() => getStorage())
],
providers: [
{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy },
AuthenticationService,
CoreService,
EventsService,
FireBaseService,
LocationTrackerService,
ManagementReportErrorsService,
MsgService,
NetworkService,
NotificationsService
],
bootstrap: [AppComponent],
})
export class AppModule {
constructor(library: FaIconLibrary) {
library.addIconPacks(fas, fab, far);
}
}

serices Auth

import { Injectable, inject } from ‘@angular/core’;
import { Auth, signInWithEmailAndPassword, signOut } from ‘@angular/fire/auth’;
import { Firestore, doc, docData } from ‘@angular/fire/firestore’;

@Injectable({
providedIn: ‘root’
})

export class AuthenticationService {

authenticatedUser:any;
firestore: Firestore = inject(Firestore);

constructor(
private auth:Auth
) { }

async login(email:string, password:string){
try {
const user = await signInWithEmailAndPassword(this.auth, email, password);
this.authenticatedUser = {user: user.user.providerData[0], key: user.user.uid}
return user.operationType;
} catch (err:any) {
return err.code;
}
}

loadProfileData(){
const user = this.auth.currentUser;
const userDocRef = doc(this.firestore, ${user?.uid});
return docData(userDocRef);
}

logout(){
return signOut(this.auth)
}
}

tambien se valido de la forma
import { Injectable, inject } from ‘@angular/core’;
import { Auth, signInWithEmailAndPassword, signOut } from ‘@angular/fire/auth’;
import { Firestore, doc, docData } from ‘@angular/fire/firestore’;

@Injectable({
providedIn: ‘root’
})

export class AuthenticationService {

authenticatedUser:any;

constructor(
private auth:Auth,
private firestore:Firestore
) { }

async login(email:string, password:string){
try {
const user = await signInWithEmailAndPassword(this.auth, email, password);
this.authenticatedUser = {user: user.user.providerData[0], key: user.user.uid}
return user.operationType;
} catch (err:any) {
return err.code;
}
}

loadProfileData(){
const user = this.auth.currentUser;
const userDocRef = doc(this.firestore, ${user?.uid});
return docData(userDocRef);
}

logout(){
return signOut(this.auth)
}
}

que solucion se puede realizar para este problema.

Solucionado !!!

La referencia se encontraba mal orientada y esto no se expreso en la documentacion.

para manejar el error el proceso en el servicio es apuntar (doc, collection a @firebase/firestore).

import { Injectable } from ‘@angular/core’;
import { Auth, signInWithEmailAndPassword, signOut } from ‘@angular/fire/auth’;
import { Firestore, docData } from ‘@angular/fire/firestore’;
import { doc } from “@firebase/firestore”;

@Injectable({
providedIn: ‘root’
})

export class AuthenticationService {

constructor(
private auth:Auth,
private firestore:Firestore
) { }

async login(email:string, password:string){
try {
const user = await signInWithEmailAndPassword(this.auth, email, password);
console.log(user);
return user.operationType;
} catch (er:any) {
console.log('Error: ', er);
return er.code;
}
}

loadProfileData():any{
if(this.auth.currentUser){
let ref = Collection name/${this.auth.currentUser?.uid};
//console.log(ref);–Validate reference
const userDocRef = doc(this.firestore, ${ref});
docData(userDocRef).subscribe((userData)=>{
//console.log(userData); validate resp
return userData;
});
}else{
return null;
}
}

logout(){
return signOut(this.auth)
}
}

:+1: :+1: :+1: :+1: