【发布时间】:2019-07-09 20:01:05
【问题描述】:
在 Angular2/Node 上工作。
对于登录,我们有以下内容
login(username: string, password: string): Observable<boolean> {
return this.http.post('http://localhost:3000/api/login', { email: username, password: password })
.map((response: Response) => {
// login successful if there's a jwt token in the response
let token = response.json() && response.json().token;
if (token) {
// set token property
this.token = token;
// store username and jwt token in local storage to keep user logged in between page refreshes
localStorage.setItem('currentUser', JSON.stringify({ username: username, token: token }));
// return true to indicate successful login
return true;
} else {
// return false to indicate failed login
return false;
}
}).catch(err =>{
if (err.status === 401)
{
console.log("caught 401 exception");
return false;
}
});
问题是我收到以下错误
'(err: any) => boolean' 类型的参数不能赋值给 '(错误:任何,捕获:Observable)类型的参数=> 可观察输入'。类型“布尔”不可分配给类型 '可观察输入'。
我不确定我需要改变什么才能让它能够赶上 401
为了测试登录看起来如下
this.webapiService.login("Donald@geek.com","moneyIsGood").subscribe(result => {
if (result === true) {
console.log('Username or password is correct');
} else {
console.log('Username or password is incorrect');
}
});
编辑:似乎我错过了关于同时使用 .catch 和订阅的一点,但仍然不确定如何以及为什么。
【问题讨论】:
-
你能检查一下吗:Angular2 : HTTP error handling
标签: node.js rest http angular service