| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319 | 
							- export class CloudObject {
 
-     className: string;
 
-     id: string | null = null;
 
-     createdAt:any;
 
-     updatedAt:any;
 
-     data: Record<string, any> = {};
 
-     constructor(className: string) {
 
-         this.className = className;
 
-     }
 
-     toPointer() {
 
-         return { "__type": "Pointer", "className": this.className, "objectId": this.id };
 
-     }
 
-     set(json: Record<string, any>) {
 
-         Object.keys(json).forEach(key => {
 
-             if (["objectId", "id", "createdAt", "updatedAt", "ACL"].indexOf(key) > -1) {
 
-                 return;
 
-             }
 
-             this.data[key] = json[key];
 
-         });
 
-     }
 
-     get(key: string) {
 
-         return this.data[key] || null;
 
-     }
 
-     async save() {
 
-         let method = "POST";
 
-         let url = `http://dev.fmode.cn:1337/parse/classes/${this.className}`;
 
-         // 更新
 
-         if (this.id) {
 
-             url += `/${this.id}`;
 
-             method = "PUT";
 
-         }
 
-         const body = JSON.stringify(this.data);
 
-         const response = await fetch(url, {
 
-             headers: {
 
-                 "content-type": "application/json;charset=UTF-8",
 
-                 "x-parse-application-id": "dev"
 
-             },
 
-             body: body,
 
-             method: method,
 
-             mode: "cors",
 
-             credentials: "omit"
 
-         });
 
-         const result = await response?.json();
 
-         if (result?.error) {
 
-             console.error(result?.error);
 
-         }
 
-         if (result?.objectId) {
 
-             this.id = result?.objectId;
 
-         }
 
-         return this;
 
-     }
 
-     async destroy() {
 
-         if (!this.id) return;
 
-         const response = await fetch(`http://dev.fmode.cn:1337/parse/classes/${this.className}/${this.id}`, {
 
-             headers: {
 
-                 "x-parse-application-id": "dev"
 
-             },
 
-             body: null,
 
-             method: "DELETE",
 
-             mode: "cors",
 
-             credentials: "omit"
 
-         });
 
-         const result = await response?.json();
 
-         if (result) {
 
-             this.id = null;
 
-         }
 
-         return true;
 
-     }
 
- }
 
- // CloudQuery.ts
 
- export class CloudQuery {
 
-     className: string;
 
-     whereOptions: Record<string, any> = {};
 
-     constructor(className: string) {
 
-         this.className = className;
 
-     }
 
-     greaterThan(key: string, value: any) {
 
-         if (!this.whereOptions[key]) this.whereOptions[key] = {};
 
-         this.whereOptions[key]["$gt"] = value;
 
-     }
 
-     greaterThanAndEqualTo(key: string, value: any) {
 
-         if (!this.whereOptions[key]) this.whereOptions[key] = {};
 
-         this.whereOptions[key]["$gte"] = value;
 
-     }
 
-     lessThan(key: string, value: any) {
 
-         if (!this.whereOptions[key]) this.whereOptions[key] = {};
 
-         this.whereOptions[key]["$lt"] = value;
 
-     }
 
-     lessThanAndEqualTo(key: string, value: any) {
 
-         if (!this.whereOptions[key]) this.whereOptions[key] = {};
 
-         this.whereOptions[key]["$lte"] = value;
 
-     }
 
-     equalTo(key: string, value: any) {
 
-         this.whereOptions[key] = value;
 
-     }
 
-     async get(id: string) {
 
-         const url = `http://dev.fmode.cn:1337/parse/classes/${this.className}/${id}?`;
 
-         const response = await fetch(url, {
 
-             headers: {
 
-                 "if-none-match": "W/\"1f0-ghxH2EwTk6Blz0g89ivf2adBDKY\"",
 
-                 "x-parse-application-id": "dev"
 
-             },
 
-             body: null,
 
-             method: "GET",
 
-             mode: "cors",
 
-             credentials: "omit"
 
-         });
 
-         const json = await response?.json();
 
-         return json || {};
 
-     }
 
-     async find() {
 
-         let url = `http://dev.fmode.cn:1337/parse/classes/${this.className}?`;
 
-         if (Object.keys(this.whereOptions).length) {
 
-             const whereStr = JSON.stringify(this.whereOptions);
 
-             url += `where=${whereStr}`;
 
-         }
 
-         const response = await fetch(url, {
 
-             headers: {
 
-                 "if-none-match": "W/\"1f0-ghxH2EwTk6Blz0g89ivf2adBDKY\"",
 
-                 "x-parse-application-id": "dev"
 
-             },
 
-             body: null,
 
-             method: "GET",
 
-             mode: "cors",
 
-             credentials: "omit"
 
-         });
 
-         const json = await response?.json();
 
-         let list = json?.results || []
 
-         let objList = list.map((item:any)=>this.dataToObj(item))
 
-         return objList || [];
 
-     }
 
-     async first() {
 
-         let url = `http://dev.fmode.cn:1337/parse/classes/${this.className}?`;
 
-         if (Object.keys(this.whereOptions).length) {
 
-             const whereStr = JSON.stringify(this.whereOptions);
 
-             url += `where=${whereStr}`;
 
-         }
 
-         const response = await fetch(url, {
 
-             headers: {
 
-                 "if-none-match": "W/\"1f0-ghxH2EwTk6Blz0g89ivf2adBDKY\"",
 
-                 "x-parse-application-id": "dev"
 
-             },
 
-             body: null,
 
-             method: "GET",
 
-             mode: "cors",
 
-             credentials: "omit"
 
-         });
 
-         const json = await response?.json();
 
-         const exists = json?.results?.[0] || null;
 
-         if (exists) {
 
-             let existsObject = this.dataToObj(exists)
 
-             return existsObject;
 
-         }
 
-         return null
 
-     }
 
-     dataToObj(exists:any):CloudObject{
 
-         let existsObject = new CloudObject(this.className);
 
-         existsObject.set(exists);
 
-         existsObject.id = exists.objectId;
 
-         existsObject.createdAt = exists.createdAt;
 
-         existsObject.updatedAt = exists.updatedAt;
 
-         return existsObject;
 
-     }
 
- }
 
- // CloudUser.ts
 
- export class CloudUser extends CloudObject {
 
-     constructor() {
 
-         super("_User"); // 假设用户类在Parse中是"_User"
 
-         // 读取用户缓存信息
 
-         let userCacheStr = localStorage.getItem("NCloud/dev/User")
 
-         if(userCacheStr){
 
-             let userData = JSON.parse(userCacheStr)
 
-             // 设置用户信息
 
-             this.id = userData?.objectId;
 
-             this.sessionToken = userData?.sessionToken;
 
-             this.data = userData; // 保存用户数据
 
-         }
 
-     }
 
-     sessionToken:string|null = ""
 
-     /** 获取当前用户信息 */
 
-     async current() {
 
-         if (!this.sessionToken) {
 
-             console.error("用户未登录");
 
-             return null;
 
-         }
 
-         
 
-         const response = await fetch(`http://dev.fmode.cn:1337/parse/users/me`, {
 
-             headers: {
 
-                 "x-parse-application-id": "dev",
 
-                 "x-parse-session-token": this.sessionToken // 使用sessionToken进行身份验证
 
-             },
 
-             method: "GET"
 
-         });
 
-         const result = await response?.json();
 
-         if (result?.error) {
 
-             console.error(result?.error);
 
-             return null;
 
-         }
 
-         return result;
 
-     }
 
-     /** 登录 */
 
-     async login(username: string, password: string):Promise<CloudUser|null> {
 
-         const response = await fetch(`http://dev.fmode.cn:1337/parse/login`, {
 
-             headers: {
 
-                 "x-parse-application-id": "dev",
 
-                 "Content-Type": "application/json"
 
-             },
 
-             body: JSON.stringify({ username, password }),
 
-             method: "POST"
 
-         });
 
-         const result = await response?.json();
 
-         if (result?.error) {
 
-             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))
 
-         return this;
 
-     }
 
-     /** 登出 */
 
-     async logout() {
 
-         if (!this.sessionToken) {
 
-             console.error("用户未登录");
 
-             return;
 
-         }
 
-         const response = await fetch(`http://dev.fmode.cn:1337/parse/logout`, {
 
-             headers: {
 
-                 "x-parse-application-id": "dev",
 
-                 "x-parse-session-token": this.sessionToken
 
-             },
 
-             method: "POST"
 
-         });
 
-         const result = await response?.json();
 
-         if (result?.error) {
 
-             console.error(result?.error);
 
-             return false;
 
-         }
 
-         // 清除用户信息
 
-         localStorage.removeItem("NCloud/dev/User")
 
-         this.id = null;
 
-         this.sessionToken = null;
 
-         this.data = {};
 
-         return true;
 
-     }
 
-     /** 注册 */
 
-     async signUp(username: string, password: string, additionalData: Record<string, any> = {}) {
 
-         const userData = {
 
-             username,
 
-             password,
 
-             ...additionalData // 合并额外的用户数据
 
-         };
 
-         const response = await fetch(`http://dev.fmode.cn:1337/parse/users`, {
 
-             headers: {
 
-                 "x-parse-application-id": "dev",
 
-                 "Content-Type": "application/json"
 
-             },
 
-             body: JSON.stringify(userData),
 
-             method: "POST"
 
-         });
 
-         const result = await response?.json();
 
-         if (result?.error) {
 
-             console.error(result?.error);
 
-             return null;
 
-         }
 
-         // 设置用户信息
 
-         this.id = result?.objectId;
 
-         this.sessionToken = result?.sessionToken;
 
-         this.data = result; // 保存用户数据
 
-         return this;
 
-     }
 
- }
 
 
  |