如何从mockAPI获取数据

时间:2017-05-30 11:15:42

标签: javascript node.js angular typescript

我想从api输入用户名=== responseApi.user时获取数据,但我的代码从api获取所有数据用户。帮助我获取数据 以下是service.ts

中代码的一部分
     @Injectable()
        export class AuthenticationService {
          private apiUrl = "http://5925399f21cf650011fddc7d.mockapi.io/api/users/";
          private users: any[]
          constructor(
            private _router: Router, private _http: Http) { }

      getList(): Observable<any[]> {
        return this._http.get(this.apiUrl).map((response: Response) => response.json())

      }
      logout() {
        localStorage.removeItem("user");
        this._router.navigate(['Login']);
      }

      login(user) {
    this._http.get(this.apiUrl).map((response: Response) => response.json()).subscribe((response: any) => {
    this.users = response;
      console.log(this.users)
      console.log(user.user)
      var authenticatedUser = this.users.find(u => u.user === user.user)
      var authenticatedUser1 = this.users.find(u => u.password === user.password);
      if (authenticatedUser && authenticatedUser1) {
        localStorage.setItem('user', authenticatedUser)
        this._router.navigate(['Home']);

        return true;
      }
      return false;
    }


    )


  }

1 个答案:

答案 0 :(得分:0)

让您的服务返回一个可观察的。哟不能同步处理这个问题。 您的登录功能可能如下所示:

login(user) {
    return this._http.get(this.apiUrl)
       .map(response => response.json())
       .map(users => users.find(u => u.user === user.user && u.password === user.password) // finds authenticatedUser
       .filter(authenticatedUser => !!authenticatedUser) // filters null and undefined
       .do(authenticatedUser  => localStorage.setItem('user', authenticatedUser))
       .do(() => this._router.navigate(['Home']));
}

在您的组件中订阅此方法。