传递 firebase 令牌的 http 请求订阅错误
subscribe error on http request passing firebase token
正在尝试将 firebase 令牌传递给 nodejs api 并检索数据。我收到订阅错误:TSS2339:属性 'subscribe' 在类型 'void 上不存在。
用户配置文件数据存储在 mongoDB 集合中,可通过 api
访问
此代码在我的用户服务中有效
public getCurrUser() {
const baseUrl = 'http://localhost:3000'
return this.http.get(baseUrl + '/userinfo').pipe(map((res) => {
console.log(res);
const userinfo = res;
console.log('user docs: ', userinfo);
return userinfo;
}));
}
这是服务中的代码,通过传递用户令牌包装:
getUserData() {
const baseUrl = 'http://localhost:3000'
firebase.auth().currentUser.getIdToken()
.then(authToken => {
const headers = new HttpHeaders({'Authorization': authToken });
return this.http.get(baseUrl + '/userinfo', {headers}).pipe(map((res) => {
console.log('the results of getUserData : ', res);
const userinfo = res;
console.log('logged in user info: ', userinfo);
return userinfo;
}));
});
}
这是没有编译订阅错误的代码,它是从组件页面调用服务:
public getCurrUserData() {
this.userCurr = null;
console.log('in user admin component - retrieval of curr user')
this.userAdminService.getUserData()
.subscribe(
(userCurr: UserProfileModel[]) => {
this.userCurr = userCurr;
console.log('loading current user: ', this.userCurr);
}
);
}
这似乎与返回一个可观察对象有关,但我无法解决问题。任何帮助将不胜感激
getUserData()
不是 return 立即可以订阅的可观察对象,因此会出现错误。它首先有一个承诺,当解决时比 return 一个可观察的但 this.userAdminService.getUserData().subscribe()
期望一个由 getUserData()
编辑的可观察的 return。
您可以尝试将可观察对象转换为丢失实时更改的承诺,或者您可以这样做:
getUserData(authToken) {
const baseUrl = 'http://localhost:3000'
const headers = new HttpHeaders({'Authorization': authToken });
return this.http.get(baseUrl + '/userinfo', {headers}).pipe(map((res) => {
console.log('the results of getUserData : ', res);
const userinfo = res;
console.log('logged in user info: ', userinfo);
return userinfo;
}));
}
public getCurrUserData() {
this.userCurr = null;
console.log('in user admin component - retrieval of curr user');
firebase.auth().currentUser.getIdToken()
.then(authToken => {
this.userAdminService.getUserData(authToken )
.subscribe((userCurr: UserProfileModel[]) => {
this.userCurr = userCurr;
console.log('loading current user: ', this.userCurr);
}
);
});
}
正在尝试将 firebase 令牌传递给 nodejs api 并检索数据。我收到订阅错误:TSS2339:属性 'subscribe' 在类型 'void 上不存在。 用户配置文件数据存储在 mongoDB 集合中,可通过 api
访问此代码在我的用户服务中有效
public getCurrUser() {
const baseUrl = 'http://localhost:3000'
return this.http.get(baseUrl + '/userinfo').pipe(map((res) => {
console.log(res);
const userinfo = res;
console.log('user docs: ', userinfo);
return userinfo;
}));
}
这是服务中的代码,通过传递用户令牌包装:
getUserData() {
const baseUrl = 'http://localhost:3000'
firebase.auth().currentUser.getIdToken()
.then(authToken => {
const headers = new HttpHeaders({'Authorization': authToken });
return this.http.get(baseUrl + '/userinfo', {headers}).pipe(map((res) => {
console.log('the results of getUserData : ', res);
const userinfo = res;
console.log('logged in user info: ', userinfo);
return userinfo;
}));
});
}
这是没有编译订阅错误的代码,它是从组件页面调用服务:
public getCurrUserData() {
this.userCurr = null;
console.log('in user admin component - retrieval of curr user')
this.userAdminService.getUserData()
.subscribe(
(userCurr: UserProfileModel[]) => {
this.userCurr = userCurr;
console.log('loading current user: ', this.userCurr);
}
);
}
这似乎与返回一个可观察对象有关,但我无法解决问题。任何帮助将不胜感激
getUserData()
不是 return 立即可以订阅的可观察对象,因此会出现错误。它首先有一个承诺,当解决时比 return 一个可观察的但 this.userAdminService.getUserData().subscribe()
期望一个由 getUserData()
编辑的可观察的 return。
您可以尝试将可观察对象转换为丢失实时更改的承诺,或者您可以这样做:
getUserData(authToken) {
const baseUrl = 'http://localhost:3000'
const headers = new HttpHeaders({'Authorization': authToken });
return this.http.get(baseUrl + '/userinfo', {headers}).pipe(map((res) => {
console.log('the results of getUserData : ', res);
const userinfo = res;
console.log('logged in user info: ', userinfo);
return userinfo;
}));
}
public getCurrUserData() {
this.userCurr = null;
console.log('in user admin component - retrieval of curr user');
firebase.auth().currentUser.getIdToken()
.then(authToken => {
this.userAdminService.getUserData(authToken )
.subscribe((userCurr: UserProfileModel[]) => {
this.userCurr = userCurr;
console.log('loading current user: ', this.userCurr);
}
);
});
}