从HTTPClient

时间:2018-03-14 05:00:15

标签: angular typescript angular5

我有一个授权服务,我试图检查用户是否存在。

import { HttpClient } from "@angular/common/http";
import 'rxjs/Rx'

@Injectable()
export class AuthService {
    constructor( private http : HttpClient) {}

    registerUser(){
        var temp = doesUserExist().subscribe(x => temp = x);
        if(temp){
            //register User logic
        }
    }

    private doesUserExist(){
        var endpoint = [myPath];
        return this.http
            .get(endpoint)
            .map(payload => payload);
    }
}

当我进入[myPath]时,我从服务器获得以下响应

[{"SqlResponse":"0"}]

我一直在遇到地图和订阅问题。在上面的实例中,我最终记录了一个Subscriber对象。我尝试过在线发现的各种技术,包括

    private doesUserExist(){
        var endpoint = [myPath];
        return this.http
            .get(endpoint)
            .map(payload => payload.json());
    }

但是这种方法只是抱怨在类型'对象'上找不到json()。我读到.map已经将字符串转换为json,所以你不需要这个。我接下来要做的就是

    private doesUserExist(){
        var endpoint = [myPath];
        return this.http
            .get(endpoint)
            .map(payload => payload[0]);
    }

但是这在我的控制台中提供了相同的Subscription对象。我读到这是一个Observable,所以我开始尝试将其转换为Observable<boolean>

    private doesUserExist() : Observable<boolean>{
        var endpoint = [myPath];
        return this.http
            .get<boolean>(endpoint)
            .map(payload => payload);
    }

但是,我只是得到一个Subscriber对象。

修改 当我尝试这种方法时......

var temp; doUserExist()。subscribe(x =&gt; {temp = x; console.log(temp);});

我仍然得到一个通用对象......如何在打字稿中访问它?

Image of Generic Object

有人能指出我正确的方向吗?我认为你可以将结果映射到return,但我认为因为我得到一个JSON数组作为响应,它可能是问题的一部分。

1 个答案:

答案 0 :(得分:0)

试试

private userExists: boolean;

private doesUserExist() : Observable<boolean>{
        var endpoint = [myPath];
        return this.http
            .get(endpoint)
            .map((resp:any) => resp.SqlResponse == "1");
    }


registerUser(){

    doesUserExist().subscribe(x => 
       {console.log('User exists ',x);
        let temp = x;  
        this.userExists = x;
       });

}