Array.isArray(response)는 null을 반환합니다. 아폴로 GraphQL
2940 단어 graphql
안녕 거기!
초기 값이 배열이 아닌 간단한 중첩 배열을 처리하기 위해 다른 부울 값에 부울 값을 포함하는 것이 얼마나 마음이 구부러질 수 있는지 상상할 수 있습니다. 따라서 이 기사는 Apollo GraphQL 설명서의 데이터 소스 부분에서 문제가 되는 모든 개발자에게 명확성을 제공할 것입니다.
부인 성명:
튜토리얼의 맥락에서 Apollo GraphQL이 어디에서 잘못되었는지, 왜 그리고 어떻게 더 잘 이해할 수 있는지에 대한 제 의견을 표현합니다.
Array.isArray(응답) ? true : 또는 false : 'apollo-datasource-rest'.
나는 Apollo가 문서에서 말하는 방식대로 책에 따라 일을 하려고 노력해 왔습니다. 'apollo-datasource-rest'로 작업할 때 튜토리얼 맥락에서 도움이 되지 않고 비생산적이라고 생각되는 코드의 일부 측면이 있습니다.
예를 들어:
async getAllLaunches() {
const response = await this.get(‘launches’);
return Array.isArray(response)
? response.map(launch => this.launchReducer(launch))
: [];
}
나 자신에 대해 말하자면, 이 기능과 관련하여 사물을 더 광범위하게 이해하는 데 있어 내 고통 포인트는 무엇입니까?
• 대괄호 사용: 부울 값으로 [], 이 맥락에서 대괄호를 사용하는 것은 오류가 발생했을 때 정보를 제공하는 디버거라기보다는 데이터 가져오기와 관련하여 소스 코드를 보는 방식 측면에서 더 미학적으로 보입니다. 던져.
• 실제로 true 또는 false인 전체 문의 대상은 값이 false일 때 오류가 발생할 수 있는 이유에 대한 이유를 반환하지 않습니다. 예: 중첩 배열 가져오기 오류는 다음과 같이 말할 수 있습니다. 하지만 현재 참조된 함수는 빈 배열 ":[ ]"을 기록하거나 대괄호 값을 "false"로 변경하면 오류가 발생할 때 단순히 null을 반환합니다. 데이터 가져오기와 관련하여 이 코드를 읽고 빈 ": [ ]"을 보는 개발자는 많은 추측을 의미할 수 있습니다.
이와 관련하여 Array.isArray(response) ? true : 또는 false는 데이터 끝점이 배열이 아닌 경우 번거로울 수 있습니다(예: ""a": [ ];"). .
“a”: [
0: {},
1: {},
]//the end point to this is not array.as oppose to[
0: {},
1: {},
]//the end point to this is an array.
Array.isArray는 단순히 값이 배열인지 여부를 확인하고, 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
따라서 위의 함수는 쿼리가 참이면 쿼리를 반환하지만 거짓이면 단순 반환 및 모호한 ":[ ]"빈 배열을 반환합니다.
따라서 오류 대신 빈 배열 값이 기록되는 경우 문제의 원인이 무엇인지 어떻게 알 수 있습니까?
다음을 디버깅하기 위해 부울 수정, true : false 문 모두에서 동일한 대상 값을 명시적으로 전달해야 했습니다.
return Array.isArray(response)
? response.map(launch => this.launchReducer(launch))
: response.map(launch => this.launchReducer(launch));// Which returns the reason of the error:// “response.map(item => is not a function” is the error message.// as oppose to an empty array “: [];”.
이 문제를 해결하기 위해 부울 연산자를 Array.isArray에 접두사로 추가하고 내포된 배열에서 데이터를 검색하기 위해 !Array.isArray로 변경하여 데이터 구조를 처리하도록 위의 코드를 수정했습니다.
접두사 뒤의 논리는 간단합니다. "a : [ ];"배열 반환이 true가 아니며 데이터를 렌더링하십시오.
업데이트된 기능은 다음과 같습니다.
async getAllLaunches() {
const response = await this.get(‘launches’);
return !Array.isArray(response)
? response.a.map(launch => this.launchReducer(launch))
: [];
}
Array.isArray(true 또는 false)는 명령문 내부에 2개의 부울 연산자 정의로 인해 이러한 특성의 가져오기 호출이 수행될 때 특히 명백하게 복잡할 수 있습니다. 따라서 빈 배열 ": [];"을 반환하는 오류 메시지가 나타납니다. 또는 거짓; 추론이 기록되지 않으면 명령문을 디버그하기 어려울 수 있습니다.
Reference
이 문제에 관하여(Array.isArray(response)는 null을 반환합니다. 아폴로 GraphQL), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/trackmystories/array-isarray-response-returns-null-apollo-graphql-26gh텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)