순차적으로 성공적으로 디코딩 한 두 개의 JSON 조각이 있습니다. 나는 새로운
html_fragment
를 가지고 싶습니다
기존
html_fragment
를 업데이트하십시오.
. 일반적으로 이것은 간단하지만 데이터 구조로 인해 어려움을 겪고 있습니다.
type PostDataContainer
= PostDataContainer PostData
type alias PostData =
{ title : String
, comments : List Comment
}
type alias Comment =
{ comment_id : Int
, html_fragment : String
}
type alias CommentHtml =
{ id : Int
, html_fragment : String
}
나는 방금
CommentHtml
를 얻었다
기존
html_fragment
를 업데이트하고 싶습니다
와이즈 비즈
. 이것이 내가 지금까지 가진 것입니다 :
Comment
MergeCommentHtml commentHtmlData ->
case commentHtmlData of
Err err ->
Debug.log ("Error decoding CommentHtmlData" ++ toString err)
( mdl, Cmd.none )
Ok commentHtml ->
case mdl.maybePostDataContainer of
Just (PostDataContainer postData) ->
let
updatedCommentData = -- I dont know how to calculate this?
in
( { mdl | postData = { postData | comments = updatedCommentData } }, Cmd.none )
참고
여기는
commentHtml
입니다
. 내 오래된
List CommentHtml
를 업데이트하는 방법에 대한 생각
comment.html_fragment
의 새로운 가치
?
commentHtml
- 답변 # 1
- 답변 # 2
옵션 1 : 데이터를 그대로 디코딩하십시오. 그것을 표시 할 시간이되면
let commentHtmlDict = commentHtmlData |> List.map (\c -> (c.id, c)) |> Dict.fromList updatedCommentData = postData.comments |> List.map (\comment -> case Dict.get comment.comment_id commentHtmlDict of Just commentHtml -> { comment | html_fragment = commentHtml.html_fragment } Nothing -> comment )
와 같이 작성한 함수를 통해 적절하게 정렬하십시오. .옵션 2 :
다음 기능을 구현한다고 가정 해보십시오.rawJsonDataToNicerData
지금 우리가
-- given a new comment, and some PostData, return the new version of the PostData updateData : CommentHtml -> PostData -> PostData -- so now, assuming we can decode a CommentHtml with commentHtmlDeocder -- we can do the following dataUpdaterDecoder : Decoder (PostData -> PostData) dataUpdaterDecoder commentHtmlDecoder |> Decoder.andThen (\commentHtml -> updateData commentHtml)
를 해독하려고 할 때마다 우리는commentHtmlDeocder
를 해독 할 수 있습니다 대신이 데이터를 사용하여 데이터를 업데이트하십시오.다음은 위의 아이디어를 활용 한 관계형 데이터 디코더의 예입니다 :
https://ellie-app.com/3KWmyJmMrDsa1
dataUpdaterDecoder
관련 자료
- .net - 쿼리에서 중첩 된 case 문으로 레코드를 업데이트하지 않는 SQL 서버
- node.js - 중첩 배열 mongodb 업데이트
- javascript - FaunaDB에서 레코드를 업데이트 할 때 모든 필드와 하위 개체를 전달하지 않고 하나의 필드를 업데이트하려면 어떻게해야합니까?
- c# - Razor 페이지에서 레코드를 업데이트하기위한 원시 SQL 쿼리
- mongodb - 중첩 배열을 업데이트하고 있는데 잘못된 요소를 업데이트합니다
- javascript - 중첩 된 객체 배열 내부의 속성 업데이트
- Django는 업데이트 대신 레코드를 삽입합니다
- laravel updating editing database record - laravel 편집 데이터베이스 레코드 업데이트 - 양식을 제출할 때 오류가 발생합니다
- javascript - ASPNET CORE React Redux Application에서 레코드가 업데이트되지 않는 이유는 무엇입니까?
- c# - 중첩 된 ObservableCollection의 RaisePropertyChanged가 업데이트되지 않음
- javascript - 불변으로 반응하여 중첩 상태 업데이트
와이즈 위즈를 주다
commentHtmlData
입니다 의견에 따르면 가장 쉬운 방법은List
로 변환하는 것입니다.Dict
에 의해 키 , 그런 다음id
를 찾고있는 기존 주석을 맵핑하십시오. dict에서. 존재하는 경우comment_id
를 교체하십시오. 그렇지 않은 경우 수정되지 않은 원본을 반환합니다.