안녕하세요.
셀렉트 어드민의 updateOptions 기능에서 responseErrorFn 동작 예제를 공유합니다.
업데이트 요청이 실패했을 때, 응답을 에러 메시지로 표시하고 싶을때
type: http (axios)호출 실패 케이스 (네트워크 실패 / inline 수정 시 HTTP 업데이트 실패)type: query+ display: form 업데이트 실패 케이스 (sqlMessage확인)
아래 YAML을 참고하여 테스트해보실 수 있습니다. (콘솔 로그로 row, row.error 등 구조도 같이 확인 가능해요)
감사합니다.
menus:
- name: responseErrorFn
path: pages/test-responseerrorfn-all
pages:
- path: pages/test-responseerrorfn-all
title: responseErrorFn 테스트
blocks:
# 1) HTTP(axios): 네트워크/DNS 실패 에러
- type: http
name: HTTP 에러 (네트워크 실패)
autoload: false
axios:
method: GET
url: https://example.invalid
responseErrorFn: |
console.log('=== http network error ===')
console.log(row)
console.log(row.error)
return `HTTP 에러: ${row.message}`
# 2) inline 수정 저장 시 updateOptions를 HTTP(axios)로 호출 (에러)
- type: query
name: Query 조회 + updateOptions(HTTP) 에러
resource: mysql.qa
sqlType: select
sql: |
SELECT 1 AS id, 'editable-value' AS name
columns:
id:
label: ID
name:
label: 이름 (inline 수정 → HTTP 호출)
updateOptions:
type: http
axios:
method: PATCH
# 500 발생
url: https://httpbin.org/status/500
data:
name: "{{value}}"
confirm: false
responseErrorFn: |
console.log('=== updateOptions http error ===')
console.log(row)
console.log(row.error)
console.log(row.error.data)
console.log(row.error.message)
console.log(row.error.status)
console.log(row.error.statusText)
return `updateOptions(HTTP) 에러: ${row.error.message}`
# 3) Query: display: form + 실패(sqlMessage 확인)
- type: query
name: Query 에러 (sqlMessage)
resource: mysql.qa
sqlType: select
sql: |
SELECT 1 AS id, 'editable-value' AS name
display: form
columns:
id:
label: ID
name:
label: 이름 (inline 수정)
updateOptions:
type: query
resource: mysql.qa
sqlType: update
sql: |
UPDATE __not_exists_table__
SET name = :name
WHERE id = :id
params:
- key: id
valueFromRow: id
- key: name
defaultValueFromRow: name
responseErrorFn: |
console.log('=== query sqlMessage error ===')
console.log(row)
console.log(row.error)
console.log(row.error.sqlMessage)
return `Query 에러(sqlMessage): ${row.error.sqlMessage}`
