cloud-query.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. /**
  2. * 查询类
  3. @example
  4. // 查询指定教练,修改价格
  5. let query = new CloudQuery("Tutor");
  6. let tutor = await query.get("imkGFr6Ztj");
  7. console.log('tutor', tutor)
  8. tutor.set({
  9. price: 199
  10. })
  11. tutor = await tutor.save()
  12. // 条件查询:价格大于60
  13. let query2 = new CloudQuery("FoodMenu");
  14. query2.lessThan("price", 60);
  15. // query2.greaterThan("price", 20);
  16. let foodList = await query2.find();
  17. console.log("foodList", foodList)
  18. // 条件查询:性别等于女
  19. let query3 = new CloudQuery("Tutor");
  20. query3.equalTo("gender", "女");
  21. let tutorList = await query3.find();
  22. console.log("tutorList", tutorList);
  23. */
  24. const { CloudObject } = require("./cloud-object")
  25. class CloudQuery {
  26. className
  27. queryParams = {
  28. where: {}
  29. }
  30. constructor(className) {
  31. this.className = className
  32. }
  33. async get(objectId) {
  34. let res = await fetch(`http://dev.fmode.cn:1337/parse/classes/${this.className}/${objectId}?`, {
  35. "headers": {
  36. "accept": "*/*",
  37. "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
  38. "x-parse-application-id": "dev"
  39. },
  40. "referrer": "http://localhost:4040/",
  41. "referrerPolicy": "strict-origin-when-cross-origin",
  42. "body": null,
  43. "method": "GET",
  44. "mode": "cors",
  45. "credentials": "omit"
  46. });
  47. let data = await res.json()
  48. let dataObj = new CloudObject(this.className);
  49. dataObj.objectId = data.objectId
  50. dataObj.set(data)
  51. console.log(data, dataObj)
  52. return dataObj
  53. }
  54. equalTo(key, value) {
  55. this.queryParams.where[key] = value
  56. }
  57. lessThan(key, value) {
  58. this.queryParams.where[key] = { "$lt": value }
  59. } g
  60. greaterThan(key, value) {
  61. this.queryParams.where[key] = { "$gt": value }
  62. }
  63. async find() {
  64. // where={%22price%22:{%22$gt%22:60}}
  65. let whereStr = ``
  66. if (Object.keys(this.queryParams.where)?.length) {
  67. whereStr = `where=` + JSON.stringify(this.queryParams.where)
  68. }
  69. let url = `http://dev.fmode.cn:1337/parse/classes/${this.className}?${whereStr}`
  70. console.log(url)
  71. let res = await fetch(url, {
  72. "headers": {
  73. "accept": "*/*",
  74. "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
  75. "if-none-match": "W/\"b2-UccTNjvsEYMR2Waro9KVbWJiRJs\"",
  76. "x-parse-application-id": "dev"
  77. },
  78. "referrer": "http://localhost:4040/",
  79. "referrerPolicy": "strict-origin-when-cross-origin",
  80. "body": null,
  81. "method": "GET",
  82. "mode": "cors",
  83. "credentials": "omit"
  84. });
  85. let data = await res.json()
  86. let list = data.results
  87. list = list.map(item => {
  88. let dataObj = new CloudObject(this.className);
  89. dataObj.objectId = item.objectId
  90. dataObj.set(item)
  91. return dataObj
  92. })
  93. console.log(list)
  94. return list
  95. }
  96. }
  97. module.exports.CloudQuery = CloudQuery