123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Document</title>
- </head>
- <body>
- <script>
- // 面向对象的写法
- // FmodeObject对象增删改 FmodeQuery对象查询
- /**
- *
- @example
- let query = new FmodeQuery("Project")
- query.lessThanAndEqualTo("duration", 30)
- let projectList = await query.find()
- */
- class FmodeQuery{
- className
- where
- include
- constructor(className){
- this.className = className
- }
- equalTo(key,value){
- this.where[key] = value
- }
- lessThanAndEqualTo(key,value){
- this.where[key] = {$lte:value}
- }
- greaterThan(key,value){
- this.where[key] = {$gt:value}
- }
- async get(){
- }
- async find(){
- /*
- 从JSON格式的where到请求参数的where
- 1.将JSON转换成字符串
- 2.将字符串进行encodeURIComponent加密
- */
- let whereStr = ``
- if(Object.keys(this.where)?.length>0){
- whereStr = encodeURIComponent(JSON.stringify(this.where))
- }
- let response = await fetch("http://dev.fmode.cn:1337/parse/classes/Project?"+whereStr, {
- "headers": {
- "accept": "*/*",
- "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
- "x-parse-application-id": "dev"
- },
- "referrer": "http://127.0.0.1:4040/",
- "referrerPolicy": "strict-origin-when-cross-origin",
- "body": null,
- "method": "GET",
- "mode": "cors",
- "credentials": "omit"
- });
- /*
- {
- results:[
- {objectId:xxxxx,name:xxxx}
- ]
- }
- */
- let data = await response.json()
- return data.results.map(item=>{
- let fmodeObject = new FmodeObject(this.className)
- fmodeObject.set(item)
- return
- })
- }
- }
- class FmodeObject{
- className
- id
- data
- constructor(className){
- this.className = className
- }
- set(data){
- this.data = {
- ...this.data,
- ...data
- }
- if(data?.objectId){
- this.data.id = data?.objectId
- }
- }
- // 无id保存,创建;有id保存,更新
- async save(){
- let data = this.data;
- delete data.objectId;
- delete data.updatedAt;
- delete data.createdAt;
- delete data.ACL;
- let updateId = this.id?`/${this.id}`:''
- let method = "POST"
- if(updateId){
- method = "PUT"
- }
- let response = await fetch("http://dev.fmode.cn:1337/parse/classes/"+this.className+updateId, {
- "headers": {
- "accept": "*/*",
- "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
- "content-type": "text/plain;charset=UTF-8",
- "x-parse-application-id": "dev"
- },
- // JSON字符串
- "body": JSON.stringify(data),
- "method": method,
- "mode": "cors",
- "credentials": "omit"
- });
- let result = await response?.json()
- if(result.objectId){
- this.id = result.objectId
- }
- return this
- }
- async destroy(){
- let response = await fetch("http://dev.fmode.cn:1337/parse/classes/Project/IjCmjyMS23", {
- "headers": {
- "accept": "*/*",
- "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
- "content-type": "text/plain;charset=UTF-8",
- "x-parse-application-id": "dev"
- },
- "referrer": "http://127.0.0.1:4040/",
- "referrerPolicy": "strict-origin-when-cross-origin",
- "body": null,
- "method": "DELETE",
- "mode": "cors",
- "credentials": "omit"
- });
- }
- }
- // JSON.stringify
- // JSON.parse
- async function createProject(projectData){
- let project = new FmodeObject("Project")
- project.set({
- name:"测试项目1",
- duration:10
- })
- project = await project.save()
- project.set({desc:"项目1的描述文档"})
- project.save() // 更新
- project.destory() // 删除
- }
- async function createProfile(data){
- let profile = new FmodeObject("Profile")
- profile.set({
- name:"新成员未命名1",
- gender:"女"
- })
- profile.save()
-
- }
- </script>
- </body>
- </html>
|