ncloud.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. class CloudObject{
  2. id // 编号
  3. className // 名称
  4. data ={} // 属性、内容
  5. constructor(className){
  6. this.className = className
  7. }
  8. toPointer(){
  9. return {"__type":"Pointer","className":this.className,"objectId":this.id}
  10. }
  11. set(json){
  12. Object.keys(json).forEach(key=>{
  13. if(["objectId","id","createdAt","updatedAt","ACL"].indexOf(key)>-1){
  14. return
  15. }
  16. this.data[key] = json[key]
  17. })
  18. }
  19. get(key){
  20. return this.data[key] || null
  21. }
  22. greaterThan(key,value){
  23. if(!this.whereOptions[key]) this.whereOptions[key] = {}
  24. this.whereOptions[key]["$gt"] = value
  25. }
  26. greaterThanAndEqualTo(key,value){
  27. if(!this.whereOptions[key]) this.whereOptions[key] = {}
  28. this.whereOptions[key]["$gte"] = value
  29. }
  30. lessThan(key,value){
  31. if(!this.whereOptions[key]) this.whereOptions[key] = {}
  32. this.whereOptions[key]["$lt"] = value
  33. }
  34. lessThanAndEqualTo(key,value){
  35. if(!this.whereOptions[key]) this.whereOptions[key] = {}
  36. this.whereOptions[key]["$lte"] = value
  37. }
  38. // 更新
  39. async save(){
  40. let method = "POST"
  41. let url = "http://dev.fmode.cn:1337/parse/classes/" + this.className; //默认
  42. if(this.id){
  43. url += "/"+this.id
  44. method = "PUT"
  45. }
  46. let body = JSON.stringify(this.data)
  47. let response = await fetch(url, {
  48. "headers": {
  49. "content-type": "application/json;charset=UTF-8",
  50. "x-parse-application-id": "dev"
  51. },
  52. "body": body,
  53. "method": method,
  54. "mode": "cors",
  55. "credentials": "omit"
  56. });
  57. let result = await response?.json();
  58. if(result?.objectId){this.id = result?.objectId}
  59. return this
  60. }
  61. // 删除
  62. async destory(){
  63. if(!this.id) return
  64. let response = await fetch("http://dev.fmode.cn:1337/parse/classes/"+this.id, {
  65. "headers": {
  66. "x-parse-application-id": "dev"
  67. },
  68. "body": null,
  69. "method": "DELETE",
  70. "mode": "cors",
  71. "credentials": "omit"
  72. });
  73. let result = await response?.json();
  74. if(result){
  75. this.id = null
  76. }
  77. return true
  78. }
  79. }
  80. // 查询
  81. class CloudQuery{
  82. className
  83. constructor(className){
  84. this.className = className
  85. }
  86. whereOptions = {}
  87. equalTo(key,value){
  88. this.whereOptions[key] = value
  89. }
  90. greaterThan(key,value){
  91. if(!this.whereOptions[key]) this.whereOptions[key] = {}
  92. this.whereOptions[key]["$gt"] = value
  93. }
  94. greaterThanAndEqualTo(key,value){
  95. if(!this.whereOptions[key]) this.whereOptions[key] = {}
  96. this.whereOptions[key]["$gte"] = value
  97. }
  98. lessThan(key,value){
  99. if(!this.whereOptions[key]) this.whereOptions[key] = {}
  100. this.whereOptions[key]["$lt"] = value
  101. }
  102. lessThanAndEqualTo(key,value){
  103. if(!this.whereOptions[key]) this.whereOptions[key] = {}
  104. }
  105. async get(id){ // 通过id查询
  106. let url = "http://dev.fmode.cn:1337/parse/classes/"+this.className+"/"+id+"?"
  107. let response = await fetch(url, {
  108. "headers": {
  109. "if-none-match": "W/\"22c-NGsQZp5SnqjXTAX+NXjLAv6LaLA\"",
  110. "x-parse-application-id": "dev"
  111. },
  112. "body": null,
  113. "method": "GET",
  114. "mode": "cors",
  115. "credentials": "omit"
  116. });
  117. let json = await response?.json();
  118. return json || {}
  119. }
  120. async find(){ // 直接查询
  121. let url = "http://dev.fmode.cn:1337/parse/classes/"+this.className+"?"
  122. if(Object.keys(this.whereOptions)?.length){
  123. let whereStr = JSON.stringify(this.whereOptions)
  124. url += `where=${whereStr}`
  125. }
  126. let response = await fetch(url, {
  127. "headers": {
  128. "if-none-match": "W/\"22c-NGsQZp5SnqjXTAX+NXjLAv6LaLA\"",
  129. "x-parse-application-id": "dev"
  130. },
  131. "body": null,
  132. "method": "GET",
  133. "mode": "cors",
  134. "credentials": "omit"
  135. });
  136. let json = await response?.json();
  137. return json?.results || []
  138. }
  139. async first(){ // 只查询第一项
  140. let url = "http://dev.fmode.cn:1337/parse/classes/"+this.className+"?"
  141. if(Object.keys(this.whereOptions)?.length){
  142. let whereStr = JSON.stringify(this.whereOptions)
  143. url += `where=${whereStr}`
  144. }
  145. let response = await fetch(url, {
  146. "headers": {
  147. "if-none-match": "W/\"22c-NGsQZp5SnqjXTAX+NXjLAv6LaLA\"",
  148. "x-parse-application-id": "dev"
  149. },
  150. "body": null,
  151. "method": "GET",
  152. "mode": "cors",
  153. "credentials": "omit"
  154. });
  155. let json = await response?.json();
  156. let exists = json?.results?.[0] || null
  157. if(exists){
  158. let existsObject = new CloudObject(this.className)
  159. existsObject.set(exists)
  160. existsObject.id = exists.objectId
  161. existsObject.createdAt = exists.createdAt
  162. existsObject.updateAt = exists.updateAt
  163. return existsObject
  164. }
  165. }
  166. }
  167. module.exports.CloudObject = CloudObject
  168. module.exports.CloudQuery = CloudQuery