2016-06-27 2 views
1

Subreddit에 각각 Post이 있고 각각 PostComment이 많은 Reddit을 만들고 있다고 가정합니다.Redux의 정규화 정보

subreddits: [{ 
    title: "food" 
    posts: [{ 
    id: "", 
    body: "..", 
    comments: [{ 
     id: ".." 
     body: "..", 
    }] 
    ..morePosts 
    }, 
    title: "culture" 
    posts: [{ 
    id: "", 
    body: "..", 
    comments: [{ 
     id: ".." 
     body: "..", 
    }] 
    ..morePosts 
    }, 
] 

을하지만 돌아 오는 등 중첩 된 상태를 낙담하기 때문에 우리가 감속기로 공급하기 전에, 우리는 데이터 구조를 정상화 : 그런 다음 API 응답은 아마 다음과 같습니다.

subredditByTitle: { 
    food: { 
    id: subreddit_1, 
    title: "food" 
    posts: [post_1, post_2] 
    } 
    culture: { 
    id: subreddit_2, 
    title: "culture" 
    posts: [post_3, post_4] 
    } 
} 

postsById: { 
    post_1: { 
    body: ".." 
    comments: [comment_1, comment_2] 
    }, 
    post_2: { 
    body: "..", 
    comments: [comment_3, comment_4] 
    } 
} 

commentsById: { 
    comment_1: { 
    body: ".." 
    }, 
    comment_2: { 
    body: ".." 
    } 
} 

을하지만 MongoDB를 사용할 때 그것은 내가 subdocuments을 사용하고 특히,이 같은 백엔드 데이터를 정상화 약간 어색한 느낌 : 그런 다음 데이터는 다음과 같이 표현 될 수있다. 관계형 DB에서는 모든 DB 테이블에 대해 조회 테이블 (예 : PostsById)을 사용하는 것이 좋습니다. 모든 DB 수집에 대해 동일한 작업을 수행하는 것이 합리적입니까? 내 직감은 모든 것을 정상화하려고 시도하는 대신 각 문서에 대해 하나의 감속기를 사용하는 것이 더 좋을 수 있지만 최선의 방법이 무엇인지 모릅니다.

답변

1

모든 항목을 정상화하고 모든 항목을 넣은 상점에 entities 개체가 있어야합니다. 나는 많은 접근법을 시도했지만 IMHO가 유일한 방법입니다.

나는이 접근법 없이는 할 수없는 일들을 위해 이것을 사용하고 있지만이 대답의 범위를 벗어났습니다. 더 일반적인 것들은 페이지 매김이고, 불필요한 데이터로드가 없을 때 asking for data only when you need them 응용 프로그램은 초라한 느낌을줍니다.

이 작은 조각 인 code을 정말 잘 살펴보고 전체적으로 redux 실제 예를 통해 배우는 것이 좋습니다. 귀하의 entities 감속기가 분명히 다르게 보일 것입니다 만, 귀하의 필요에 맞게 직접 작성할 수 있어야합니다.

+0

이력서에는 문서 기반 데이터를 정규화해야 할 때 redux가 많은 것을 생각하기 시작합니다. mongo를 사용하여 개발할 때 가장 좋은 점은 조인 등의 데이터 정규화 및 처리가 필요 없다는 것입니다. mongo 데이터가있는 redux를 사용하여 그렇게 나쁘다고 느낍니다. –