데이터 업데이트를 하려는데 _version
을 같이 넘겨주지 않으면 실패한다.
근데 amplify codegen model
로 생성한 모델에는 _version
이 빠져있어서 수동으로 넣어줘야 한다. 왜지???
아무튼 _version 없이 사용하려고 찾아봤는데, 이틀만에야 찾았다. https://stackoverflow.com/a/72403949/1025379 를 참고해서 Disable Conflict Detection
을 해줘야 한다.
$ amplify update api ? Select from one of the below mentioned services: (Use arrow keys) ❯ GraphQL REST ? Select a setting to edit Authorization modes Conflict resolution strategy ❯ Disable conflict detection $ amplify push
이러면 _version
없어도 업데이트를 할 수 있다. 이게 무슨 용도인지는 https://docs.aws.amazon.com/ko_kr/appsync/latest/devguide/conflict-detection-and-sync.html 에 나와있다.
이 방법 말고 다른 방법도 있었다. https://github.com/aws-amplify/amplify-cli/issues/4355#issuecomment-642565027 처럼 AppSync - project - Method - MutationUpdatePostDataResolverFn
의 #24 부분을
#foreach( $entry in $ctx.stash.metadata.modelObjectKey.entrySet() )
#foreach( $entry in $modelObjectKey.entrySet() )
이렇게 만들어 주면 된다. 근데 이렇게 하면 amplify push 할 때마다 이 부분이 원상복구가 되기 때문에 amplify/backend/api/TEST1/build/resolvers/Mutation.updatePost.req.vtl
파일을 amplify/backend/api/TEST1/resolvers/Mutation.updatePost.req.vtl
로 복사해서 저 부분을 수정한다음 push 하면 AppSync에 수정된 코드는 들어가는데, 문제는 push 할 때마다 MutationUpdatePostDataResolverFn 에 들어가서 저장을 눌러줘야 한다 🤦🏻♂️🤮
이 방법은 반드시 오류가 발생할테니 하지 않는게 좋다.