如何在graphql中传递查询参数

时间:2016-10-26 18:23:41

标签: reactjs graphql

是否可以在graphql中传递body查询中的数据?喜欢这个

    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: JD@test.com , message: blablabla) {id, statut}}\n                               ^\n",
      "locations": [
        {
          "line": 1,
          "column": 29
        }
      ]
    }
  ]
}

感谢您的帮助

2 个答案:

答案 0 :(得分:3)

使用variables撰写查询,避免构建字符串。你可以免费获得类型检查!

我并不精通javascript,但我相信这会奏效:

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)

答案 1 :(得分:0)

这对我有用;

def PrintImage(request,std_id):
    response = HttpResponse(content_type='application/pdf')
    doc = SimpleDocTemplate(response,topMargin=2)

    doc.pagesize = landscape(A6)
    elements = []
    I = Image('http://demoschoolzen.educationzen.com/images/tia.png')
    I.drawHeight =  0.7*inch
    I.drawWidth = 0.7*inch
    elements.append(I)
    doc.build(elements) 
    return response