cloud-object.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. /**
  2. @example
  3. let tutor = new CloudObject("Tutor")
  4. tutor.set({
  5. name:"宋教练",
  6. age:22,
  7. gender:"女"
  8. })
  9. tutor.save()
  10. let food = new CloudObject("FoodMenu")
  11. food.set({
  12. title:"馅饼",
  13. price:10,
  14. })
  15. food.save()
  16. */
  17. class CloudObject {
  18. className
  19. objectId
  20. data = {}
  21. constructor(className) {
  22. this.className = className
  23. }
  24. set(data) {
  25. Object.keys(data).forEach(key => {
  26. this.data[key] = data[key]
  27. })
  28. }
  29. async save() {
  30. let method = "POST"
  31. let url = "http://dev.fmode.cn:1337/parse/classes/" + this.className
  32. if (this.objectId) {
  33. method = "PUT"
  34. url = url + "/" + this.objectId
  35. }
  36. let response = await fetch(url, {
  37. "headers": {
  38. "content-type": "text/plain;charset=UTF-8",
  39. "x-parse-application-id": "dev"
  40. },
  41. "body": JSON.stringify(this.data),
  42. "method": method,
  43. "mode": "cors",
  44. "credentials": "omit"
  45. });
  46. let data = await response.json()
  47. this.objectId = data.objectId
  48. }
  49. async destroy() {
  50. let url = "http://dev.fmode.cn:1337/parse/classes/" + this.className + "/" + this.objectId
  51. let response = await fetch(url, {
  52. "headers": {
  53. "content-type": "text/plain;charset=UTF-8",
  54. "x-parse-application-id": "dev"
  55. },
  56. "body": null,
  57. "method": "DELETE",
  58. "mode": "cors",
  59. "credentials": "omit"
  60. });
  61. let data = await response.json()
  62. this.objectId = data.objectId
  63. }
  64. }
  65. module.exports.CloudObject = CloudObject