Селектор избыточности не фильтрует вложенный массив соответственно - PullRequest
2 голосов
/ 23 января 2020

Я пытаюсь отфильтровать записи, в которых значение Likes userId равно params.userId, так как сейчас я получаю пустой массив. В идеале он должен получать все сообщения, которые понравился params.userId.

селектор

export const getUserPosts = (params) => {
    return createSelector(
        postSelector,
        (state) => {
            const findIndex = state.posts.findIndex((x) => x.userId == params.userId);
            console.log(findIndex)
            // const likedPosts = state.posts.reduce((acc, cv) => {
            //     const newPosts = {
            //         Likes: cv.Likes.filter((item) => item.userId == params.userId)
            //     }
            //     const newerPosts = newPosts.Likes.length !== 0 ? newPosts.Likes : []
            //     console.log(newerPosts)

            //     return { acc, newerPosts }
            // }, [])
            // console.log(likedPosts)
            return state.posts.filter((item) => item.Likes.userId == params.userId)
        }
    )
}

Форма массива

{
  "id": 7,
  "title": "another testf",
  "postContent": "fsfsfsfsfssfsf",
  "likedByMe": false,
  "likeCounts": 1,
  "userId": 81,
  "createdAt": "2020-01-22T02:59:17.763Z",
  "updatedAt": "2020-01-23T02:49:40.801Z",
  "author": {
    "username": "barnowl2",
    "gravatar": "https://i.pravatar.cc/150?img=11",
    "bio": null
  },
  "Likes": [
    {
      "id": 11,
      "userId": 81,
      "resourceId": 7,
      "createdAt": "2020-01-23T02:32:52.761Z",
      "updatedAt": "2020-01-23T02:32:52.761Z"
    }
  ],
  "Comments": []
}

1 Ответ

3 голосов
/ 23 января 2020

У вас есть многоуровневый массив сообщений и их лайков. Если вам нужно найти все посты с лайками, которые соответствуют определенному идентификатору пользователя, я думаю, что это будет выглядеть так:

state.posts.filter(post => {
  return post.Likes.find(like => like.userId === params.userId)
})

.find() будет проходить через лайки и возвращать объект или нуль, что будет сообщите .filter() включить или нет сообщение

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