In my service, I am able to connect to firebase realtime db and retrieve the information I want. However, when I try to call the method from a component, the result is always 'undefined'.
service.ts
async getUserSettings(userID : string) {
const firebaseToken = await
this.angularFireAuth.auth.currentUser.getIdToken(true);
let searchParams = new HttpParams();
searchParams = searchParams.set('auth', firebaseToken);
searchParams = searchParams.append('id', userID);
this.http.get<{ [userID: string]: SettingsModel }>(API.DB_URL + API.userSettings,
{
params: searchParams
})
.pipe(
map(responseData => {
let settings : SettingsModel;
for (const key in responseData) {
if (responseData.hasOwnProperty(key)) {
if(responseData[key].id === userID) {
settings = responseData[key];
}
// postsArray.push({ ...responseData[key], id: key });
}
}
return settings;
}),
catchError(errorResponse => {
return throwError(errorResponse);
})
)
.subscribe(setting => {
this.retrievedSettings = setting;
return this.retrievedSettings;
});
}
component
getUserSettings() {
const userID = this.authenticationService.getUserId();
this.userSettings = this.dbService.getUserSettings(userID)
.then(responseData => {
console.log(responseData);
});
the responseData always returns undefined