2017-10-12 1 views
0

자바 스크립트 변수를 graphql 돌연변이가 (이 일부 GQL 도우미를 통해이 아닌 수동으로 구성 있다는 무시하십시오) 를 주입 참조 :JavaScript에서 입력 문자열을 이스케이프 처리하는 적절한 방법은 무엇입니까?

mutation { 
    createPost(
    name: "${name}", 
    description: "${description}" 
) { id } 
} 

name & description 문자열 변수를 탈출하기위한 표준 기능이 있습니까?

예 :

mutation { 
    createPost(
    name: "${gqlEscape(name)}", 
    description: "${gqlEscape(description)}" 
) { id } 
} 

어떻게 그 함수의 모습 : 쿼리의 안전을 몇 가지 기능 gqlEscape?

답변

0

문자열 보간 대신 유스 케이스 용으로 설계된 GraphQL 변수를 사용할 수 있습니다. 원시 HTTP를 사용하여이 작업을 수행 할 수도 있지만이 경우에는 일반적으로 graphql-request을 사용합니다.

다음은 예입니다 :

import { request } from 'graphql-request' 

const mutation = ` 
    mutation newPost($name: String!, $description: String) { 
    createPost(
     name: $name, 
     description: $description 
    ) { 
     id 
    } 
    } 
` 

const variables = { 
    name: 'New Post', 
} 

request('my-endpoint', mutation, variables).then(data => console.log(data)) 

몇 가지 참고 사항 :

  • 나는 두 개의 변수, name: String!description: String을 정의했다. String!이 필요하고 은 선택적 변수임을 의미하는 반면 String 유형의 변수를 의미합니다. 당신은 description에 대한 값을 전달하지 않았 음을 알 수 있는데, 이것은 선택 사항이므로 가능합니다.
  • 나는 이 아니고 두 개의 문자열에 대해 큰 따옴표를 지정했습니다.이 값은 이미 GraphQL 변수 자체에서 처리했습니다.
  • GraphQL 변수 herehere에 대한 자세한 내용을 볼 수 있습니다.
+1

감사합니다. GraphQL 요청 라이브러리가 작업을 수행 한 것처럼 보입니다. 나는 내부적으로 어떻게 동작하는지 궁금했지만, graphql-request code를 살펴보면, JSON.stringify 만 사용되었다. 아마도 나의 초기 예제에서는'name : $ {JSON.stringify (name) },'그냥 작동 할 수도 있습니다. //하지만 당신이 맞습니다. – Jurosh

관련 문제