2017-03-10 1 views
2

Mon but est de pouvoir passer un objet à cordes dans une requête GraphQL.GraphQL-js Node/Express: Comment passer un objet à cordes dans une requête GraphQL?

Objectif:

{ 
    accounts (filter: 
     '{"fieldName": "id", 
     "fieldValues":["123"], 
     "filterType":"in"}'){ 
     id 
     } 
} 

Erreur:

"Syntax Error GraphQL request (1:22) Unexpected single quote character ('), did you mean to use a double quote (\")?" 

Le problème est GraphQL ne semble pas accepter des chaînes entourées de guillemets simples. L'utilisation de guillemets simples à l'intérieur de l'objet ne sera pas possible car cela nécessiterait des changements majeurs au client qui compile ces objets.

Exemple:

{ 
"fieldName": "id", 
"fieldValues":["123"], 
"filterType":"in" 
} 

Schéma:

accounts: { 
    type: new GraphQLList(accountType), 
    args: { 
    id: { type: GraphQLString }, 
    status: { type: GraphQLString }, 
    filter: { type: GraphQLString }, 
    sort: { type: GraphQLString }, 
    }, 
    resolve: (root, args, { loaders }) => loaders.account.load(args), 
}, 

Répondre

0

Vous avez besoin d'échapper à double-qoutes intérieur chaîne de requête:

{ 
    accounts (
    filter: "{\"fieldName\":\"id\",\"fieldValues\":[\"123\"],\"filterType\":\"in\"}" 
){ id } 
} 
+0

Merci pour l'entrée. Malheureusement, cela ne fonctionnera pas car cela nécessiterait des modifications de code du côté client. – JTAN