Explorar o código

HW 15 (GraphQL) done

vladislavaSim hai 1 ano
pai
achega
d35db4af01
Modificáronse 2 ficheiros con 94 adicións e 0 borrados
  1. 13 0
      HW15/index.html
  2. 81 0
      HW15/main.js

+ 13 - 0
HW15/index.html

@@ -0,0 +1,13 @@
+<!doctype html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport"
+          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title>HW15</title>
+</head>
+<body>
+<script src="main.js"></script>
+</body>
+</html>

+ 81 - 0
HW15/main.js

@@ -0,0 +1,81 @@
+let gql = (url, query, variables={}) =>
+    fetch(url, {
+        method: 'POST',
+        headers:{
+            Accept: 'application/json',
+            "Content-Type": 'application/json'
+        },
+        body: JSON.stringify({query, variables})
+    }).then(res => res.json())
+
+// используя функцию gql, понаделать функций с параметрами для разных запросов: категории, категория по id с товарами, товар по id с картинками и описанием, логин, регистрация.
+//     например:
+let idd = 123456
+// `\\"_id\\":\\"${id}\\"`
+console.log(JSON.parse("[{\"_id\":\"123456\"}]"))
+const url = 'http://shop-roles.node.ed.asmer.org.ua/graphql'
+const gqlCategoriesList = () => {
+    return gql(url, `query cats{
+    CategoryFind(query: "[{}]"){
+    _id, name,
+  }
+}`, {}
+    )
+}
+
+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 gqlLogin = (login, password) =>
+    gql(url,
+        `query login($login:String, $password: String){
+                login(login:$login, password: $password)
+        }`, {login, password})
+
+const gqlCategories = () => {
+    return gql(url,
+        ` query categories{
+                            CategoryFind(query:"[{}]"){
+                            _id name goods {
+                                _id
+                                name
+                                price
+                                description
+                                }
+                          }
+                     }`
+        );
+}
+const productSearchById = (id) => {
+    let jsn = JSON.stringify({_id: id})
+    return gql(
+        url,
+        `query searchById{
+        GoodFind(query: ${JSON.stringify(`[${jsn}]`)}){
+            name description images {
+                _id
+                createdAt
+                text
+                url
+                originalFileName
+            }
+        }
+    }`,
+    );
+};
+
+(async function callAll() {
+    console.log(await gqlCategoriesList());
+    console.log(await gqlRegister("Vlada Simonova", "123456"));
+    console.log(await gqlLogin("Vlada Simonova", "123456"));
+    console.log(await gqlCategories());
+    console.log(await productSearchById("62c9472cb74e1f5f2ec1a0d3"));
+})();
+
+
+