const gql = url => (query, variables = {}) => fetch(url, { method: 'POST', headers: { "Content-Type": "application/json", "Accept": "application/json", }, body: JSON.stringify({ query, variables }) }).then(res => res.json()).then(data => { try { if (!data.data && data.errors) { throw new SyntaxError(JSON.stringify(Object.values(data.errors[0])[0])); } else { return Object.values(data.data)[0] } } catch (e) { console.log(e); } }); const url = 'http://shop-roles.node.ed.asmer.org.ua/graphql' const gqlLogin = (login, password) => gql(`query login($login:String, $password: String){ login(login:$login, password: $password) }`, { login, password }) const gqlRegister = (login, password) => { return gql(url, `mutation register($login: String, $password: String){ UserUpsert(user: {login: $login, password: $password}){ _id, login, createdAt } }`, { login, password }) } const gqlCategories = () => { return gql(url, ` query categories{ CategoryFind(query:"[{}]"){ _id name goods { _id name price description } } }` ); } const categoryIdImagesDescription = (id) => { let SearchId = `\\"_id\\":\\"${id}\\"` return gql( url, ` query categoryIdImagesDescription{ GoodFind(query:"[{${SearchId}}]"){ name description images{ _id url text } } } ` ) } console.log(gqlCategories()); console.log(categoryIdImagesDescription("")); console.log(gqlRegister("noname ", "noname")); console.log(gqlLogin("noname ", "noname"));