|
@@ -0,0 +1,125 @@
|
|
|
+class CloudObject{
|
|
|
+ id // 编号
|
|
|
+ className // 名称
|
|
|
+ data ={} // 属性、内容
|
|
|
+ constructor(className){
|
|
|
+ this.className = className
|
|
|
+ }
|
|
|
+ set(json){
|
|
|
+ Object.keys(json).forEach(key=>{
|
|
|
+ if(["objectId","id","createdAt","updatedAt","ACL"].indexOf(key)>-1){
|
|
|
+ return
|
|
|
+ }
|
|
|
+ this.data[key] = json[key]
|
|
|
+ })
|
|
|
+ }
|
|
|
+ get(key){
|
|
|
+ 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"
|
|
|
+ }
|
|
|
+ let body = JSON.stringify(this.data)
|
|
|
+ let response = await fetch(url, {
|
|
|
+ "headers": {
|
|
|
+ "content-type": "application/json;charset=UTF-8",
|
|
|
+ "x-parse-application-id": "dev"
|
|
|
+ },
|
|
|
+ "body": body,
|
|
|
+ "method": "POST",
|
|
|
+ "mode": "cors",
|
|
|
+ "credentials": "omit"
|
|
|
+ });
|
|
|
+ let result = await response?.json();
|
|
|
+ if(result?.objectId){this,id = result?.objectId}
|
|
|
+ return this
|
|
|
+ }
|
|
|
+ // 删除
|
|
|
+ async destory(){
|
|
|
+ if(!this.id) return
|
|
|
+ let response = await fetch("http://dev.fmode.cn:1337/parse/classes/ChatPartner/"+this.id, {
|
|
|
+ "headers": {
|
|
|
+ "x-parse-application-id": "dev"
|
|
|
+ },
|
|
|
+ "body": null,
|
|
|
+ "method": "DELETE",
|
|
|
+ "mode": "cors",
|
|
|
+ "credentials": "omit"
|
|
|
+ });
|
|
|
+ let result = await response?.json();
|
|
|
+ if(result){
|
|
|
+ this.id = null
|
|
|
+ }
|
|
|
+ return true
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+// 查询
|
|
|
+class CloudQuery{
|
|
|
+ className
|
|
|
+ constructor(className){
|
|
|
+ this.className = className
|
|
|
+
|
|
|
+ }
|
|
|
+ whereOptions = {}
|
|
|
+ greaterThan(key,value){
|
|
|
+ if(!this.whereOptions[key]) this.whereOptions[key] = {}
|
|
|
+ this.whereOptions[key]["$gt"] = value
|
|
|
+ }
|
|
|
+ greaterThanAndEqualTo(key,value){
|
|
|
+ if(!this.whereOptions[key]) this.whereOptions[key] = {}
|
|
|
+ this.whereOptions[key]["$gte"] = value
|
|
|
+ }
|
|
|
+ lessThan(key,value){
|
|
|
+ if(!this.whereOptions[key]) this.whereOptions[key] = {}
|
|
|
+ this.whereOptions[key]["$lt"] = value
|
|
|
+ }
|
|
|
+ lessThanAndEqualTo(key,value){
|
|
|
+ if(!this.whereOptions[key]) this.whereOptions[key] = {}
|
|
|
+ this.whereOptions[key]["$lte"] = value
|
|
|
+ }
|
|
|
+ equalTo(key,value){
|
|
|
+ this.whereOptions[key] = value
|
|
|
+ }
|
|
|
+ async get(id){ // 通过id查询
|
|
|
+ let url = "http://dev.fmode.cn:1337/parse/classes/"+this.className+"/"+id+"?"
|
|
|
+ let response = await fetch(url, {
|
|
|
+ "headers": {
|
|
|
+ "if-none-match": "W/\"22c-NGsQZp5SnqjXTAX+NXjLAv6LaLA\"",
|
|
|
+ "x-parse-application-id": "dev"
|
|
|
+ },
|
|
|
+ "body": null,
|
|
|
+ "method": "GET",
|
|
|
+ "mode": "cors",
|
|
|
+ "credentials": "omit"
|
|
|
+ });
|
|
|
+ let 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){
|
|
|
+ let whereStr = JSON.stringify(this.whereOptions)
|
|
|
+ url += `where=${whereStr}`
|
|
|
+ }
|
|
|
+ let response = await fetch(url, {
|
|
|
+ "headers": {
|
|
|
+ "if-none-match": "W/\"22c-NGsQZp5SnqjXTAX+NXjLAv6LaLA\"",
|
|
|
+ "x-parse-application-id": "dev"
|
|
|
+ },
|
|
|
+ "body": null,
|
|
|
+ "method": "GET",
|
|
|
+ "mode": "cors",
|
|
|
+ "credentials": "omit"
|
|
|
+ });
|
|
|
+ let json = await response?.json();
|
|
|
+ return json?.results || []
|
|
|
+ }
|
|
|
+ first(){ // 只查询第一项
|
|
|
+ }
|
|
|
+}
|