소스 검색

fix: ncloud on https url

未来全栈 3 달 전
부모
커밋
0712f7273b
2개의 변경된 파일83개의 추가작업 그리고 92개의 파일을 삭제
  1. 77 92
      tailor-app/myapp/src/lib/ncloud.ts
  2. 6 0
      tailor-app/package-lock.json

+ 77 - 92
tailor-app/myapp/src/lib/ncloud.ts

@@ -2,8 +2,8 @@
 export class CloudObject {
     className: string;
     id: string | null = null;
-    createdAt: any;
-    updatedAt: any;
+    createdAt:any;
+    updatedAt:any;
     data: Record<string, any> = {};
 
     constructor(className: string) {
@@ -29,7 +29,7 @@ export class CloudObject {
 
     async save() {
         let method = "POST";
-        let url = `http://dev.fmode.cn:1337/parse/classes/${this.className}`;
+        let url = `https://dev.fmode.cn/parse/classes/${this.className}`;
 
         // 更新
         if (this.id) {
@@ -61,7 +61,7 @@ export class CloudObject {
 
     async destroy() {
         if (!this.id) return;
-        const response = await fetch(`http://dev.fmode.cn:1337/parse/classes/${this.className}/${this.id}`, {
+        const response = await fetch(`https://dev.fmode.cn/parse/classes/${this.className}/${this.id}`, {
             headers: {
                 "x-parse-application-id": "dev"
             },
@@ -88,7 +88,7 @@ export class CloudQuery {
         this.className = className;
     }
 
-    include(...fileds: string[]) {
+    include(...fileds:string[]) {
         this.queryParams["include"] = fileds;
     }
     greaterThan(key: string, value: any) {
@@ -112,15 +112,12 @@ export class CloudQuery {
     }
 
     equalTo(key: string, value: any) {
-        // 确保 this.queryParams["where"] 已经初始化为对象
-        if (!this.queryParams["where"]) {
-            this.queryParams["where"] = {};  // 防止未初始化的情况
-        }
+        if (!this.queryParams["where"]) this.queryParams["where"] = {};
         this.queryParams["where"][key] = value;
     }
 
     async get(id: string) {
-        const url = `http://dev.fmode.cn:1337/parse/classes/${this.className}/${id}?`;
+        const url = `https://dev.fmode.cn/parse/classes/${this.className}/${id}?`;
 
         const response = await fetch(url, {
             headers: {
@@ -134,26 +131,30 @@ export class CloudQuery {
         });
 
         const json = await response?.json();
-        return json || {};
+        if (json) {
+            let existsObject = this.dataToObj(json)
+            return existsObject;
+        }
+        return null
     }
 
-    async find() {
-        let url = `http://dev.fmode.cn:1337/parse/classes/${this.className}?`;
+    async find():Promise<Array<CloudObject>> {
+        let url = `https://dev.fmode.cn/parse/classes/${this.className}?`;
 
         let queryStr = ``
-        Object.keys(this.queryParams).forEach(key => {
+        Object.keys(this.queryParams).forEach(key=>{
             let paramStr = JSON.stringify(this.queryParams[key]);
-            if (key == "include") {
+            if(key=="include"){
                 paramStr = this.queryParams[key]?.join(",")
             }
-            if (queryStr) {
+            if(queryStr) {
                 url += `${key}=${paramStr}`;
-            } else {
+            }else{
                 url += `&${key}=${paramStr}`;
             }
         })
         // if (Object.keys(this.queryParams["where"]).length) {
-
+            
         // }
 
         const response = await fetch(url, {
@@ -169,12 +170,13 @@ export class CloudQuery {
 
         const json = await response?.json();
         let list = json?.results || []
-        let objList = list.map((item: any) => this.dataToObj(item))
+        let objList = list.map((item:any)=>this.dataToObj(item))
         return objList || [];
     }
 
+
     async first() {
-        let url = `http://dev.fmode.cn:1337/parse/classes/${this.className}?`;
+        let url = `https://dev.fmode.cn/parse/classes/${this.className}?`;
 
         if (Object.keys(this.queryParams["where"]).length) {
             const whereStr = JSON.stringify(this.queryParams["where"]);
@@ -201,7 +203,7 @@ export class CloudQuery {
         return null
     }
 
-    dataToObj(exists: any): CloudObject {
+    dataToObj(exists:any):CloudObject{
         let existsObject = new CloudObject(this.className);
         existsObject.set(exists);
         existsObject.id = exists.objectId;
@@ -217,7 +219,7 @@ export class CloudUser extends CloudObject {
         super("_User"); // 假设用户类在Parse中是"_User"
         // 读取用户缓存信息
         let userCacheStr = localStorage.getItem("NCloud/dev/User")
-        if (userCacheStr) {
+        if(userCacheStr){
             let userData = JSON.parse(userCacheStr)
             // 设置用户信息
             this.id = userData?.objectId;
@@ -226,7 +228,7 @@ export class CloudUser extends CloudObject {
         }
     }
 
-    sessionToken: string | null = ""
+    sessionToken:string|null = ""
     /** 获取当前用户信息 */
     async current() {
         if (!this.sessionToken) {
@@ -234,7 +236,7 @@ export class CloudUser extends CloudObject {
             return null;
         }
         return this;
-        // const response = await fetch(`http://dev.fmode.cn:1337/parse/users/me`, {
+        // const response = await fetch(`https://dev.fmode.cn/parse/users/me`, {
         //     headers: {
         //         "x-parse-application-id": "dev",
         //         "x-parse-session-token": this.sessionToken // 使用sessionToken进行身份验证
@@ -250,45 +252,9 @@ export class CloudUser extends CloudObject {
         // return result;
     }
 
-     /** 获取特定用户信息 */
-     async getUserByUsername(objectId: string) {
-        const url = `http://dev.fmode.cn:1337/parse/classes/_User?where=${JSON.stringify({ objectId })}`;
-
-        const response = await fetch(url, {
-            headers: {
-                "accept": "*/*",
-                "x-parse-application-id": "dev",
-                "x-parse-master-key": "devmk", // 使用您的 Master Key
-                "Content-Type": "application/json"
-            },
-            method: "GET",
-            mode: "cors",
-            credentials: "omit"
-        });
-
-        const result = await response?.json();
-        if (result?.error) {
-            console.error(result?.error);
-            return null; // 返回 null 表示未找到用户或发生错误
-        }
-
-        // 处理查询结果
-        if (result.results && result.results.length > 0) {
-            const userData = result.results[0]; // 获取第一个匹配的用户
-            const user = new CloudUser();
-            user.set(userData);
-            user.id = userData.objectId;
-            user.createdAt = userData.createdAt;
-            user.updatedAt = userData.updatedAt;
-            return user; // 返回找到的用户对象
-        }
-
-        return null; // 如果没有找到用户,返回 null
-    }
-
     /** 登录 */
-    async login(username: string, password: string): Promise<CloudUser | null> {
-        const response = await fetch(`http://dev.fmode.cn:1337/parse/login`, {
+    async login(username: string, password: string):Promise<CloudUser|null> {
+        const response = await fetch(`https://dev.fmode.cn/parse/login`, {
             headers: {
                 "x-parse-application-id": "dev",
                 "Content-Type": "application/json"
@@ -302,14 +268,14 @@ export class CloudUser extends CloudObject {
             console.error(result?.error);
             return null;
         }
-
+        
         // 设置用户信息
         this.id = result?.objectId;
         this.sessionToken = result?.sessionToken;
         this.data = result; // 保存用户数据
         // 缓存用户信息
         console.log(result)
-        localStorage.setItem("NCloud/dev/User", JSON.stringify(result))
+        localStorage.setItem("NCloud/dev/User",JSON.stringify(result))
         return this;
     }
 
@@ -320,7 +286,7 @@ export class CloudUser extends CloudObject {
             return;
         }
 
-        const response = await fetch(`http://dev.fmode.cn:1337/parse/logout`, {
+        const response = await fetch(`https://dev.fmode.cn/parse/logout`, {
             headers: {
                 "x-parse-application-id": "dev",
                 "x-parse-session-token": this.sessionToken
@@ -328,18 +294,26 @@ export class CloudUser extends CloudObject {
             method: "POST"
         });
 
-        const result = await response?.json();
+        let result = await response?.json();
+
         if (result?.error) {
             console.error(result?.error);
+            if(result?.error=="Invalid session token"){
+                this.clearUserCache()
+                return true;
+            }
             return false;
         }
 
+        this.clearUserCache()
+        return true;
+    }
+    clearUserCache(){
         // 清除用户信息
         localStorage.removeItem("NCloud/dev/User")
         this.id = null;
         this.sessionToken = null;
         this.data = {};
-        return true;
     }
 
     /** 注册 */
@@ -350,7 +324,7 @@ export class CloudUser extends CloudObject {
             ...additionalData // 合并额外的用户数据
         };
 
-        const response = await fetch(`http://dev.fmode.cn:1337/parse/users`, {
+        const response = await fetch(`https://dev.fmode.cn/parse/users`, {
             headers: {
                 "x-parse-application-id": "dev",
                 "Content-Type": "application/json"
@@ -368,7 +342,7 @@ export class CloudUser extends CloudObject {
         // 设置用户信息
         // 缓存用户信息
         console.log(result)
-        localStorage.setItem("NCloud/dev/User", JSON.stringify(result))
+        localStorage.setItem("NCloud/dev/User",JSON.stringify(result))
         this.id = result?.objectId;
         this.sessionToken = result?.sessionToken;
         this.data = result; // 保存用户数据
@@ -377,21 +351,21 @@ export class CloudUser extends CloudObject {
 
     override async save() {
         let method = "POST";
-        let url = `http://dev.fmode.cn:1337/parse/users`;
-
+        let url = `https://dev.fmode.cn/parse/users`;
+    
         // 更新用户信息
         if (this.id) {
             url += `/${this.id}`;
             method = "PUT";
         }
-
-        let data: any = JSON.parse(JSON.stringify(this.data))
+    
+        let data:any = JSON.parse(JSON.stringify(this.data))
         delete data.createdAt
         delete data.updatedAt
         delete data.ACL
         delete data.objectId
         const body = JSON.stringify(data);
-        let headersOptions: any = {
+        let headersOptions:any = {
             "content-type": "application/json;charset=UTF-8",
             "x-parse-application-id": "dev",
             "x-parse-session-token": this.sessionToken, // 添加sessionToken以进行身份验证
@@ -403,7 +377,7 @@ export class CloudUser extends CloudObject {
             mode: "cors",
             credentials: "omit"
         });
-
+    
         const result = await response?.json();
         if (result?.error) {
             console.error(result?.error);
@@ -411,25 +385,36 @@ export class CloudUser extends CloudObject {
         if (result?.objectId) {
             this.id = result?.objectId;
         }
-        localStorage.setItem("NCloud/dev/User", JSON.stringify(this.data))
+        localStorage.setItem("NCloud/dev/User",JSON.stringify(this.data))
         return this;
     }
 }
 
+export class CloudApi{
+    async fetch(path:string,body:any,options?:{
+        method:string
+        body:any
+    }){
 
-
-// fetch("http://dev.fmode.cn:1337/parse/classes/_User?where={%22username%22:%22chengnan%22}", {
-//     "headers": {
-//       "accept": "*/*",
-//       "accept-language": "zh-CN,zh;q=0.9",
-//       "if-none-match": "W/\"fe-JIlchyuW4LZub+2xCTNV/QiJ0wc\"",
-//       "x-parse-application-id": "dev",
-//       "x-parse-master-key": "devmk"
-//     },
-//     "referrer": "http://localhost:4040/",
-//     "referrerPolicy": "strict-origin-when-cross-origin",
-//     "body": null,
-//     "method": "GET",
-//     "mode": "cors",
-//     "credentials": "omit"
-//   });
+        let reqOpts:any =  {
+            headers: {
+                "x-parse-application-id": "dev",
+                "Content-Type": "application/json"
+            },
+            method: options?.method || "POST",
+            mode: "cors",
+            credentials: "omit"
+        }
+        if(body||options?.body){
+            reqOpts.body = JSON.stringify(body || options?.body);
+            reqOpts.json = true;
+        }
+        let host = `https://dev.fmode.cn`
+        // host = `http://127.0.0.1:1337`
+        let url = `${host}/api/`+path
+        console.log(url,reqOpts)
+        const response = await fetch(url,reqOpts);
+        let json = await response.json();
+        return json
+    }
+}

+ 6 - 0
tailor-app/package-lock.json

@@ -0,0 +1,6 @@
+{
+  "name": "tailor-app",
+  "lockfileVersion": 3,
+  "requires": true,
+  "packages": {}
+}