cloud-object.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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. delete this.data.createdAt
  37. delete this.data.updatedAt
  38. delete this.data.objectId
  39. let response = await fetch(url, {
  40. "headers": {
  41. "content-type": "text/plain;charset=UTF-8",
  42. "x-parse-application-id": "dev"
  43. },
  44. "body": JSON.stringify(this.data),
  45. "method": method,
  46. "mode": "cors",
  47. "credentials": "omit"
  48. });
  49. let data = await response.json()
  50. this.objectId = data.objectId
  51. }
  52. async destroy() {
  53. let url = "http://dev.fmode.cn:1337/parse/classes/" + this.className + "/" + this.objectId
  54. let response = await fetch(url, {
  55. "headers": {
  56. "content-type": "text/plain;charset=UTF-8",
  57. "x-parse-application-id": "dev"
  58. },
  59. "body": null,
  60. "method": "DELETE",
  61. "mode": "cors",
  62. "credentials": "omit"
  63. });
  64. let data = await response.json()
  65. this.objectId = data.objectId
  66. }
  67. }
  68. module.exports.CloudObject = CloudObject