2016-10-26 5 views
0

graphql에서 본문 쿼리 내에서 데이터를 전달할 수 있습니까 ?? 이처럼graphql에서 쿼리 매개 변수를 전달하는 방법

var name = formData.get('name'); 
    var email = formData.get('email'); 
    var message = formData.get('message'); 

    const resp = await fetch('/graphql', { 
     method: 'post', 
     headers: { 
      Accept: 'application/json', 
      'Content-Type': 'application/json', 
     }, 
     body: JSON.stringify({ 
      query: '{createPost (name: '+ name +' , email: '+ email +' , message: '+ message +') {id, statut}}', 

     }), 
     credentials: 'include', 
    }); 
    const { data } = await resp.json(); 
    if (!data || !data.createPost) throw new Error('Error'); 

    console.log(data.createPost) 

쿼리 라인에서 나는 제출 양식에서 얻는 모든 var를 전달하려고합니다. 나는이 때 , 내가

{ 


"errors": [ 
    { 
     "message": "Syntax Error GraphQL request (1:29) Expected :, found Name \"email\"\n\n1: {createPost(name: John Doe , email: [email protected] , message: blablabla) {id, statut}}\n        ^\n", 
     "locations": [ 
     { 
      "line": 1, 
      "column": 29 
     } 
     ] 
    } 
    ] 
} 

는 쿼리를 구성하는 문자열 건물을 피하기 위해 도움

답변

3

사용 variables 주셔서 감사합니다이 오류가 발생했습니다. 무료로 유형 검사를받습니다!

내가 자바 스크립트에서 잘 정통한 아니지만, 나는이 일 것으로 예상 :

여기
var name = formData.get('name'); 
var email = formData.get('email'); 
var message = formData.get('message'); 

const resp = await fetch('/graphql', { 
    method: 'post', 
    headers: { 
     Accept: 'application/json', 
     'Content-Type': 'application/json', 
    }, 
    body: JSON.stringify({ 
     query: 'query Q($name: String, $email: String, $message: String){createPost (name: $name, email: $email, message: $message) {id, statut}}', 
     variables: { 
      name: name, 
      email: email, 
      message: message 
     } 

    }), 
    credentials: 'include', 
}); 
const { data } = await resp.json(); 
if (!data || !data.createPost) throw new Error('Erreur sur l`envoi du message !'); 

console.log(data.createPost) 
0

이 나를 위해 일한 무엇;

const graphqlQuery = `{ 
     products { 
     id 
     title 
     images 
     } 
    }` 

const params = encodeURI(graphqlQuery) 

fetch('http://localhost:3001/?raw&query=' + params, { 
    method: 'post', 
    headers: { 
    "Content-Type": 'text/plain' 
    } 
}).then(function(response) { 
    console.log('response', response); 
    return response.json() 
}) 
관련 문제