안녕하세요! 쿼리를 이용해서 테이블을 만들고, 해당 테이블의 특정 행을 선택한 뒤, 버튼 ...
# 03_도움-요청
u
안녕하세요! 쿼리를 이용해서 테이블을 만들고, 해당 테이블의 특정 행을 선택한 뒤, 버튼 액션을 통해서 선택한 행을 삭제하는 기능을 구현하고 있습니다.
Copy code
pages:
- path: users/user
  blocks:
  - type: query
    resource: DEV_ARTWORKER
    sqlType: select
    sql: >
      SELECT mw.MEMBER_ID AS 'MEMBER_ID', mw.WORKER_ID, mw.USER_NAME AS 'USERNAME', CONCAT(mw.LAST_NAME, " ", mw.FIRST_NAME) AS 'NAME', pm.PROFILE_ID, m.APP_PUSH_YN, m.SMS_YN FROM MEMBER_WORKER mw left JOIN PROFILE_MAST pm ON mw.WORKER_ID = pm.WORKER_ID left JOIN MEMBER m ON m.MEMBER_ID = mw.MEMBER_ID WHERE(LENGTH(:MEMBER_ID) = 0 OR mw.MEMBER_ID = :MEMBER_ID) AND (LENGTH(:USER_NAME) = 0 OR mw.USER_NAME LIKE CONCAT('%', :USER_NAME, '%')) AND (LENGTH(:NAME) = 0 OR CONCAT(mw.LAST_NAME, " ", mw.FIRST_NAME) LIKE CONCAT('%', :NAME, '%')) AND (m.APP_PUSH_YN != :APP_PUSH_YN) AND (m.SMS_YN != :SMS_YN) GROUP BY mw.MEMBER_ID
    submitButton:
      label: 조회
      type: danger
    resetButton:
      label: 초기화
      type: light
    columns:
          MEMBER_ID:
            width : 100px
          WORKER_ID:
            width : 100px
          PROFILE_ID:
            width : 100px
          USERNAME:
            width : 120px
          NAME :
            width : 120px
          APP_PUSH_YN:
            width : 120px
            color:
              Y: red
              N: gray
          SMS_YN :
            width : 120px
            color:
              Y: red
              N: gray
    searchOptions:
      enabled: true
    selectOptions: 
      enabled: true
    paginationOptions:
      enabled: true
      perPage: 10
      perPageDropdown:
        - 10
        - 50
        - 100
    reloadAfterSubmit: true
    tableOptions:
      fixed: true
    actions:
      - name: delete
        label: 삭제하기
        button:
          type: danger-light
        placement: right top
        type: http
        axios :
          method: POST
          url : <https://devapi.artworker.co.kr/auth/withdraw>
          headers : >
            {
              "Content-Type": "application/json"
              "Authorization": "Bearer 토큰",
            }
          data:
            memberId: "{{MEMBER_ID}}"
        params:
        - key: MEMBER_ID
          valueFromSelectedRows: MEMBER_ID
        confirmText: |
          정말로 삭제하시겠습니까?    
    params:
    - key: MEMBER_ID
      label: 멤버 아이디
      placeholder: ex)MR20240516000004
    - key: USER_NAME
      label: 유저 이름
      placeholder: ex)nanan
    - key: NAME
      label: 이름
      placeholder: ex)김상옥
    - key: APP_PUSH_YN
      label: 푸쉬 동의
      radioButtonGroup: true
      radio:
        - value: ''
          label: 전체
        - value: N
          label: 동의
        - value: Y
          label: 미동의
    - key: SMS_YN
      label: SMS 수신 동의
      radioButtonGroup: true
      radio:
        - value: ''
          label: 전체
        - value: N
          label: 동의
        - value: Y
          label: 미동의
위와 같이 코드를 작성해봤는데, 특정 행을 선택하고 삭제하기 버튼을 통해서 삭제 과정을 진행하면 자꾸 실패하더라구요. 로그를 확인해보니 제가 지정한 {{MEMBER_ID}} 값이 안 가져와지는 것을 알 수 있었습니다. 코드도 가이드에서 안내하는대로 작성했고, 오타나 문법 오류도 없는 것 같은데 원인 파악이 어렵네요 ㅠㅠ 혹시 이유가 뭔지 알 수 있을까요? 아래는 response 내용입니다.
Copy code
typehttp 
messageError
bodyaxios.headers JSON invalid: Unexpected string in JSON at position 41 
block
copy
{
name:"delete"
label:"삭제하기"
button:{
type:"danger-light"
}
placement:"right top"
type:"http"
axios:{
method:"POST"
url:"<https://devapi.artworker.co.kr/auth/withdraw>"
headers:"{
"Content-Type": "application/json"
"Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJtZW1iZXJJZCI6Ik1SMjAyNDA4MjYwMDAwMDQiLCJ3b3JrZXJJZCI6Ik1XMjAyNDA4MjYwMDAwMDQiLCJ1c2VybmFtZSI6InllamluNTU1Njk3MDEiLCJmaXJzdE5hbWUiOiJ5b29uamluIiwibGFzdE5hbWUiOiJraW0iLCJ3b3JrZXJUeXBlIjoiV1QwMSIsInByb2ZpbGVJZCI6IkFQTTIwMjQwODI2MDAwMDA1IiwiaWF0IjoxNzI1NTkxNjY5LCJleHAiOjE3MjgxODM2Njl9.MPRIaLuQS7Datn5CsuwiiIsO3z_guujzNX6Xeh_y2sg",
}
"
data:{
memberId:"{{MEMBER_ID}}"
}
}
params:[
0:{
key:"MEMBER_ID"
valueFromSelectedRows:"MEMBER_ID"
}
]
confirmText:"정말로 삭제하시겠습니까?
"
}
1
u
안녕하세요. @피승권 님 문의주셔서 감사합니다.
Copy code
axios :
          method: POST
          url : <https://devapi.artworker.co.kr/auth/withdraw>
          headers : >
            {
              "Content-Type": "application/json"
              "Authorization": "Bearer 토큰",
            }
해당 부분에서 headers > Content-Type: application/json 뒤에 콤마(,)가 빠져있는듯 합니다.
Copy code
axios:
          method: POST
          url: <https://devapi.artworker.co.kr/auth/withdraw>
          headers: >
            {
              "Content-Type": "application/json",
              "Authorization": "Bearer 토큰"
            }
위와 같이 했을때도 동일하실까요? 확인 부탁드립니다. 감사합니다.
u
안녕하세요! 답변 주셔서 감사합니다. 해당 오류 수정하고 다시 API 요청을 보냈는데, response에 자꾸 {{MEMBER_ID}} 값이 안 담겨서 요청이 가는 것 같네요. 테이블에서 특정 행을 선택하고 삭제하기 버튼을 누르면 해당 행에 있는 정보를 가져오는 형태라고 생각했는데, 혹시 틀린걸까요?
u
버튼 실행시 셀렉트 콘솔로그 http request 쪽에 값이 잘 들어갔다면 valueFromSelectedRows에서 값이 전달되었을것으로 보입니다. API 별도 호출시에는 잘 되셨는데 셀렉트어드민에서는 에러가 난 상황이실까요?
u
네 맞습니다! POSTMAN에서 API 별도 호출 시에는 잘 되었는데, 셀렉트 어드민에서는 문제가 발생하고 있는 상황입니다. HTTP 요청을 보내면 HTTP 500에러와 함께 ‘No Such Member exist’ 문구의 에러가 발생하는데, MEMBER_ID 값이 body에 제대로 담기지 않아서 발생하는 문제로 보입니다. 콘솔로그에서 http request의 code_fields 부분을 참고하니 MEMBER_ID 값을 valueFromSelectedRows로 잘 가져오고 있는 것 같습니다.
Copy code
[
  {
    "code": "MEMBER_ID",
    "value": {
      "key": "MEMBER_ID",
      "label": "MEMBER_ID",
      "placeholder": "ex)MR20240516000004",
      "value": [
        "MR20240829000006"
      ],
      "$path": "pages.1.blocks.0.params",
      "$path$i": "pages.1.blocks.0.params.0",
      "$path$block": "pages.1.blocks.0",
      "valueFromSelectedRows": "MEMBER_ID",
      "valueFromSelectedRowsAs": "MEMBER_ID"
    }
  }
]
그런데 아래 http responese 부분을 확인해보면 “{{MEMBER_ID}}“로 되어있는 부분에 “MR20240829000006” 라는 값이 들어가야 하는 것 같은데, 그냥 “{{MEMBER_ID}}“로 표시되어서 생기는 문제로 보입니다. { “name”: “delete”, “label”: “삭제하기“, “button”: { “type”: “danger-light” }, “placement”: “right top”, “type”: “http”, “axios”: { “method”: “POST”, “url”: api url, “headers”: “{\n \“Content-Type\“: \“application/json\“,\n \“Authorization\“: \“Bearer token_address”,
"data": {
"memberId": "{{MEMBER_ID}}"
}
}, “params”: [ { “key”: “MEMBER_ID”, “valueFromSelectedRows”: “MEMBER_ID” } ], “confirmText”: “정말로 삭제하시겠습니까? \n” }
🙏 1
u
확인 감사합니다! 코드 해석 부분에 문제가 확인되어 패치 배포되었습니다. 아직 이슈가 계속되고 있다면 말씀해주세요.
👍 1
u
오 이제 정상적으로 됩니다! 감사합니다 🙇
u
감사합니다. 추가로 도움이 필요하시면 문의 남겨주세요 🙂
🙇 1
안녕하세요. 관련해서 이슈가 있어 테스트후 재배포 예정입니다. 배포후에 다시 안내드리겠습니다.
🙇 1
u
안녕하세요! 😄 어제 첫번째 배포 시점에는 정상적으로 되었는데, 오늘 다시 시도해봤는데 같은 오류가 발생하는 것 같습니다 ㅠㅠ 혹시 확인 부탁드려도 될까요?
u
네 해당 부분 아직 테스트가 더 필요해서 배포후에 메시지드리겠습니다. 감사합니다.
🙇 1