Свойство «фильтр» не существует - PullRequest
0 голосов
/ 18 декабря 2018

Я хотел бы получить пользователя и отфильтровать, существует ли данное имя пользователя.У меня проблема со свойством

«фильтр» не существует для типа «Объект»

    TakeUsernameIfExist(user: User) {
    return this.http.get(this.rootUrl + 'api/TakeUserName/' + user.UserName )
      .delay(1000)
      .map(users => users.filter( data => data === user.UserName))
      .map(users => !users.length);
}

Я добавил импорт для фильтра, и проблема сохраняется.

import 'rxjs / add / operator / filter';Мой метод веб-API:

    [HttpGet]
    [AllowAnonymous]
    [Route("api/TakeUserName/{username}")]
    public  string TakeUserName(string username)
    {
        var userStore = new UserStore<ApplicationUser>(new ApplicationDbContext());
        var manager = new UserManager<ApplicationUser>(userStore);

        var result =  userStore.FindByNameAsync(username);
        if(result==null)
        {
            return null;
        }
        else
        {
            return result.Result.UserName;
        }

    }

Любая помощь или предложение приветствуется.

1 Ответ

0 голосов
/ 18 декабря 2018

Ваша проблема в том, что вы НЕ возвращаете СПИСОК (или Массив) из WEBAPI, НО вы возвращаете ОБЪЕКТ ... и метод Filter JS работает на ARRAY

, поэтому здесь вам не нужнометод фильтра, потому что вы ищете имя пользователя (и у вас не может быть более одного пользователя в Identity Asp.NET с двумя похожими именами пользователей)

, поэтому попробуйте это в своем WEB API вернуть bool:

   [HttpGet]
    [AllowAnonymous]
    [Route("api/TakeUserName/{username}")]
    public async<IHttpActionResult> TakeUserName(string username) //<-- IHttpActionResult  is better
    {
        var userStore = new UserStore<ApplicationUser>(new ApplicationDbContext());
        var manager = new UserManager<ApplicationUser>(userStore);

        var result =await userStore.FindByNameAsync(username);


            return  (result==null || !result.IsSuccess //<-- not sure for this prorperty name) ? Ok(false) : Ok( !string.isNullOrEmtpy(result.UserName);


    }

так в вашем клиенте:

TakeUsernameIfExist(user: User) : Promise<bool> {
    return this.http.get<bool>(this.rootUrl + 'api/TakeUserName/' + user.UserName ).toPromise()

}

Надеюсь, это поможет вам!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...