async function getGQL(url) { return async (query, variables) => { let options = { method: 'POST', headers: { "Content-Type": "application/json", }, body: JSON.stringify({ query, variables }) } if(localStorage.authToken) { options.headers.Authorization = `Bearer ${localStorage.authToken}` } console.log(options.headers) try { let response = await fetch(url, options) let { data } = await response.json() console.log('data reseved', data) return data[Object.keys(data)[0]] } catch (e) { console.warn('an eror occured', e) } } } (async () => { const gql2 = await getGQL('http://shop-roles.asmer.fs.a-level.com.ua/graphql') console.log('from getGQL: ', (await gql2(` query cats{ CategoryFind(query:"[{}]"){ name goods{ name } } }` , { login: 'tst', password: '123' }))) })() let _id = "61a762f9c750c12ba6ba40aa" async function catById(_id) { let gql = await getGQL('http://shop-roles.asmer.fs.a-level.com.ua/graphql') let data = await gql(`query catById($query:String){ CategoryFindOne(query:$query){ name goods{ _id name } } }`, { query: JSON.stringify([{ _id }]) }) return data } async function loginAndToken(log, pass) { let gql = await getGQL('http://shop-roles.asmer.fs.a-level.com.ua/graphql') let data = await gql(` query log($login:String, $password:String) { login(login: $login, password: $password) }`, {login: log, password: pass}) return data } async function registerUser(obj) { let gql = await getGQL('http://shop-roles.asmer.fs.a-level.com.ua/graphql') let data = await gql(` mutation register($login:String, $password:String, $nick:String) { UserUpsert( user: { login: $login, password: $password }){ login _id } }`, {user: obj}) return data } (async () => { localStorage.authToken = await loginAndToken("OLDBOY228", "3321") console.log('info token', localStorage.authToken) console.log('idis', await catById(_id)) console.log('New user', await registerUser({login:"123F11F", password:"123"})) })()