关于批量更新与删除

关于批量更新与删除,到贴吧搜了之前的帖子,官方版主明确表示了不支持条件查询与更新(不信邪的试了一下,果然不行)
        client.batch([{
            "method": "PUT",
            "path": "/mcm/api/system_article?filter={'where':{id:'5c486f7e6dbcbe324e3b8c38'}}",
            "body": {
                "title": "apicloud"
            }
        }], function(ret, err) {
            if (err) {alert(JSON.stringify(err));
                //处理错误 err
            } else {alert(JSON.stringify(ret));
                //处理数据 ret
            }
        })
嘿嘿,确实不行,目前只能根据id更新,那么在批量更新之前我们就试着在批量更新或者删除之前查一下ID吧,虽然可能会有些不开心~那么说一下,如何使用batch(在此,我相亲之前肯定有同学实现了,也学会了,但是为什么就不能发一下帖子呢,让我们这些刚接触的小白们学习学习)

关于之前帖子里提到的只能使用jquery 实现,我想说,当然不是,jquery也只是把ajax封装,api.ajax也是封装,js-sdk,mcm 都是,我相信其他的也是可以的,我这边用的js-sdk,说为什么,因为js-sdk用着比较爽,怎么爽的,看下官网的文档对比一下(数据云API  github 地址),或者在API调试的地方看下最下面提供的访问方式(当然是用mcm模块也挺好的,但是一些模版性的代码会比较烦,要创建query,要使用whereEqual方法,要记录qid查询什么什么的,如果你不再进行一次简单的封装,会发现你的html里充满了这些代码)

说回正题,js-sdk 实现方式
首先我们知道APICLOUD 提供的是Restful API,其中 POST 方法添加数据,PUT 方法更新和添加数据,DELETE 删除数据(POST方法官网已提供)

那更新的话我们就用PUT,删除就用DELETE 就好。
然后看官方提供的batch方法(一下是js-sdk中提到的)

.batch(requests,callback(ret,err))
(method为POST、PUT的时候需要在body内传值,为GET的时候不需要传递bodypath路径为相对路径)

从上面这句话我们知道了,在使用batch 的时候需要的参数为requests 请求(多个request请求),在添加和更新表中数据的时候把method改为POST,PUT就OK了(删除就用DELETE)
那么更新和删除需要上传ID,ID怎么写,很简单我们看一下API调试和文档会发现,官网提供的查询的REST API 为标准的

/mcm/api/CLASSNAME/ID ,SO,我们只需要把method更改下就OK,像是这样:

批量更新
        client.batch([{
            "method": "PUT",
            "path": "/mcm/api/CLASSNAME/ID",
            "body": {
                "title": "apicloud"
             }
        },......], function(ret, err) {
            if (err) {alert(JSON.stringify(err));
                //处理错误 err
            } else {alert(JSON.stringify(ret));
                //处理数据 ret
            }
        })

批量删除的话把method 里的PUT 改为DELETE 就OK了。
还有点,我们其实也可以不在body里加参数,直接丢到path里也可以的,但是要把对象转为字符串,但是这里不建议这样干。
有兴趣的同学可以看下js-sdk的源码关于batch,里面写的很清楚哦~

猜你喜欢

转载自www.cnblogs.com/jony-it/p/10315446.html