Răsfoiți Sursa

feat: cloud-query

未来全栈 5 zile în urmă
părinte
comite
12836f5782

+ 3 - 0
example-book/6.0.cloud.object/cloud-object.js

@@ -36,6 +36,9 @@ class CloudObject {
             method = "PUT"
             url = url + "/" + this.objectId
         }
+        delete this.data.createdAt
+        delete this.data.updatedAt
+        delete this.data.objectId
 
         let response = await fetch(url, {
             "headers": {

+ 105 - 0
example-book/6.0.cloud.object/cloud-query.js

@@ -0,0 +1,105 @@
+/**
+ * 查询类
+ @example
+// 查询指定教练,修改价格
+    let query = new CloudQuery("Tutor");
+    let tutor = await query.get("imkGFr6Ztj");
+    console.log('tutor', tutor)
+    tutor.set({
+        price: 199
+    })
+    tutor = await tutor.save()
+
+    // 条件查询:价格大于60
+    let query2 = new CloudQuery("FoodMenu");
+    query2.lessThan("price", 60);
+    // query2.greaterThan("price", 20);
+    let foodList = await query2.find();
+    console.log("foodList", foodList)
+
+    // 条件查询:性别等于女
+    let query3 = new CloudQuery("Tutor");
+    query3.equalTo("gender", "女");
+    let tutorList = await query3.find();
+    console.log("tutorList", tutorList);
+
+ */
+const { CloudObject } = require("./cloud-object")
+
+
+class CloudQuery {
+    className
+    queryParams = {
+        where: {}
+    }
+    constructor(className) {
+        this.className = className
+    }
+
+    async get(objectId) {
+        let res = await fetch(`http://dev.fmode.cn:1337/parse/classes/${this.className}/${objectId}?`, {
+            "headers": {
+                "accept": "*/*",
+                "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
+                "x-parse-application-id": "dev"
+            },
+            "referrer": "http://localhost:4040/",
+            "referrerPolicy": "strict-origin-when-cross-origin",
+            "body": null,
+            "method": "GET",
+            "mode": "cors",
+            "credentials": "omit"
+        });
+        let data = await res.json()
+        let dataObj = new CloudObject(this.className);
+        dataObj.objectId = data.objectId
+        dataObj.set(data)
+        console.log(data, dataObj)
+        return dataObj
+    }
+    equalTo(key, value) {
+        this.queryParams.where[key] = value
+    }
+    lessThan(key, value) {
+        this.queryParams.where[key] = { "$lt": value }
+    } g
+    greaterThan(key, value) {
+        this.queryParams.where[key] = { "$gt": value }
+    }
+    async find() {
+        // where={%22price%22:{%22$gt%22:60}}
+        let whereStr = ``
+        if (Object.keys(this.queryParams.where)?.length) {
+            whereStr = `where=` + JSON.stringify(this.queryParams.where)
+        }
+        let url = `http://dev.fmode.cn:1337/parse/classes/${this.className}?${whereStr}`
+        console.log(url)
+        let res = await fetch(url, {
+            "headers": {
+                "accept": "*/*",
+                "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
+                "if-none-match": "W/\"b2-UccTNjvsEYMR2Waro9KVbWJiRJs\"",
+                "x-parse-application-id": "dev"
+            },
+            "referrer": "http://localhost:4040/",
+            "referrerPolicy": "strict-origin-when-cross-origin",
+            "body": null,
+            "method": "GET",
+            "mode": "cors",
+            "credentials": "omit"
+        });
+        let data = await res.json()
+        let list = data.results
+        list = list.map(item => {
+            let dataObj = new CloudObject(this.className);
+            dataObj.objectId = item.objectId
+            dataObj.set(item)
+            return dataObj
+        })
+        console.log(list)
+        return list
+    }
+
+}
+
+module.exports.CloudQuery = CloudQuery

+ 4 - 3
example-book/6.0.cloud.object/tutor-cloud.js

@@ -9,12 +9,13 @@ async function main() {
     })
     tutor.save()
 
-    let food = new CloudObject("FoodMenu")
-    food.set({
+    let foodMenu = new CloudObject("FoodMenu")
+    foodMenu.set({
         title: "馅饼",
         price: 10,
     })
-    food.save()
+    foodMenu.save()
 }
 
+
 main();

+ 29 - 0
example-book/6.0.cloud.object/tutor-query.js

@@ -0,0 +1,29 @@
+const { CloudQuery } = require("./cloud-query");
+
+async function main() {
+
+    // 查询指定教练,修改价格
+    let query = new CloudQuery("Tutor");
+    let tutor = await query.get("imkGFr6Ztj");
+    console.log('tutor', tutor)
+    tutor.set({
+        price: 199
+    })
+    tutor = await tutor.save()
+
+    // 条件查询:价格大于60
+    let query2 = new CloudQuery("FoodMenu");
+    query2.lessThan("price", 60);
+    // query2.greaterThan("price", 20);
+    let foodList = await query2.find();
+    console.log("foodList", foodList)
+
+    // 条件查询:性别等于女
+    let query3 = new CloudQuery("Tutor");
+    query3.equalTo("gender", "女");
+    let tutorList = await query3.find();
+    console.log("tutorList", tutorList);
+}
+
+
+main();