Как правильно отобразить любимые рецепты пользователя ASP. NET CORE MVC - PullRequest
0 голосов
/ 16 марта 2020

Работа над. NET Core 3.1.1 MVC + Angular

У меня странная проблема с отображением любимых рецептов пользователя.

Когда я вызываю getFavRecipes в моем Ответ У меня есть два любимых рецепта для пользователя (идентификатор 1), который такой же, как в базе данных.

enter image description here

Затем я вызываю getUser (идентификатор 1 ) и favRecipes равны нулю .. enter image description here

Мой код:

  public class User
    {
        public int Id { get; set; }
        public string Username { get; set; }
        public ICollection<UserPhoto> UserPhotos {get; set;}
        public ICollection<Recipe> Recipes {get; set;}
        public ICollection<FavouriteRecipe> FavRecipes {get; set;}

    }



   public class FavouriteRecipe
    {
        public int RecipeId { get; set; }
        public Recipe Recipe { get; set; }
        public int UserId { get; set; }
        public User User { get; set; }
        public DateTime DateLiked { get; set; }

    }


public class Recipe
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Ingredients { get; set; }
    public int PreparationTime { get; set; }
    public string Description { get; set; }
    public DateTime DateAdded { get; set; }
    public ICollection<RecipePhoto> RecipePhotos {get; set;}
    public User User { get; set; }
    public int UserId { get; set; }
}

UserRepository

  public async Task<User> GetUser(int id)
    {
         var user = await _context.Users
         .Include(p => p.UserPhotos)
         .Include(f=>f.FavRecipes)
         .Include(r => r.Recipes)
            .ThenInclude(r => r.RecipePhotos)
         .FirstOrDefaultAsync(r => r.Id == id);
        return user;
    }


    public Task<List<Recipe>> GetUserFavRecipes(int userId)
    {

        var userFavRecipes = _context.FavouriteRecipes
        .Include(x => x.Recipe)
        .Where(x => x.UserId == userId)
        .Select(x => x.Recipe)?.ToListAsync();

        return userFavRecipes;
    }

Контроллер

 [HttpGet("{id}", Name = "GetUser")] 
    public async Task<IActionResult> GetUser(int id)
    {
        var user = await _userRepository.GetUser(id);

        var userToReturn = _mapper.Map<UserForDetailDto>(user);

        return Ok(userToReturn);
    }



    [HttpGet("{id}/favouriteRecipes")] 
    public async Task<IActionResult> GetUserFavRecipes(int id)
    {

        var userFavRecipes = await _userRepository.GetUserFavRecipes(id);

        return Ok(userFavRecipes);
    }

@ Liero

enter image description here

1 Ответ

0 голосов
/ 16 марта 2020

Полагаю, проблема в преобразователе dto:

mapper.Map<UserForDetailDto>(user);

установите точку останова на этой строке или запишите объект пользователя в какой-либо журнал или проверьте его в противном случае и проверьте свойство FavRecipes

...