uniCloud基础操作 增删改查

1,778 阅读4分钟

什么是uniCloud

uniCloud 是 DCloud 联合阿里云、腾讯云,为开发者提供的基于 serverless 模式和 js 编程的云开发平台。

severless是让我们只需要管理自己的业务,不在需要去关心这些热备、负载、增容、DDOS攻击等事情 ,也就是说我们前面提到的后端服务配套,它就自身集成,并且它帮我们维护和升级。

severless基于node,性能比较高,真正的做到了自动的弹性扩容,按量收费,就像我们用手机的流量一样,用多少,付多少。

severless可以免域名使用,服务器,省去了域名的购买备案解析的流程和成本。

微信小程序有一个叫微信小程序云的微服务,它就是severless服务,但是无论是微信小程序云还是阿里那边推出的支付宝小程序云,他们都只能提供自身的应用场景。

比如说我们的微信小程序云它只能用于开发微信小程序,阿里的就只能开发支付宝小程序。

uniCloud就是联合我们阿里和腾讯共同开发的一款支持跨端的severless技术,它可以支持我们的微信小程序、支付宝小程序、头条小程序、还有百度小程序,以及qq小程序,以及支持h5应用,和app。

像阿里云severless已经经过了20年双11的考验,像腾讯自己的应用,比如腾讯的生活缴费,腾讯新闻等,都是用的severless技术,所以可以放心大胆的拿去商用

总结来说,uniCloud轻松搞定前后台整体业务,实现真正跨端。

新建项目

新建一个uni-app项目 启动云开发 选择想要的云服务

在此之前要先完成uniCloud的实名认证

image-20210802202255132

确认应用的应用标识appleID已经获取

image-20210802203000057

云空间

有在Web控制台创建过云空间,就选择:关联云服务空间或项目

如果没有,就创建cloudfuctions目录 用来放置云函数

image-20210802202803250

创建云函数

在cloudfunction目录新建一个云函数,以test为例

image-20210802203405149

云函数

新云函数的基础样式

image-20210802203555726

选择上传并运行,等待控制台完成上传成功

image-20210802203835920

上传成功

image-20210802203849680

可以去web端云函数列表查看是否有云函数出现

image-20210802204009774

在页面请求云函数

pages/index/index.vue

 <template>
   <view class="content">
     <!-- 定义请求按钮 -->
     <button type="default" @click="btnClick">请求</button>
   </view>
 </template>
 ​
 <script>
   export default {
     methods: {
       // 请求方式
       btnClick() {
         // 调取云函数
         uniCloud.callFunction({
           // 云函数名字
           name: 'test',
           
           // 传输数据 
           data: {
             name: '测试数据'
           },
           
           // 成功
           success(res) {
             console.log(res);
           },
           
           // 失败
           fail(e) {
             console.log(e);
           }
         })
       }
     },
   }
 </script>
 ​
 <style>
   .content {
     padding: 30px;
   }
 </style>
 ​

uniCloud/cloudfunctions/test/index.js

 'use strict';
 exports.main = async (event, context) => {
   //event为客户端上传的参数
   console.log('event : ', event)
 ​
   return {
     code: 200,
     message: 'ok',
     data: event
   }
 };

成功样式

image-20210802212852453

注意:每次修改云函数,都需要上传

云数据库

创建云数据库

image-20210802213114349

image-20210802214332084

增删改查

添加数据

这里添加一个对象数组

 'use strict';
 ​
 //对数据库的对象获取
 const db = uniCloud.database()
 ​
 exports.main = async (event, context) => {
   // 对mydatabase数据库的获取
   const collection = db.collection('mydatabase')
   
   //event为客户端上传的参数
   console.log('event : ', event)
 ​
   // 添加数据
   let res = await collection.add(
   [
     {
       _id: '01',
       name: 'test01'
     },
     {
       _id: '02',
       name: 'test02'
     }
   ])
   
   return {
     code: 200,
     message: 'ok',
     data: event
   }
 };

image-20210802221354692

可以在web端云数据库查看

image-20210802214844190

删除数据

删除_id为01的数据

 'use strict';
 ​
 //对数据库的对象获取
 const db = uniCloud.database()
 ​
 exports.main = async (event, context) => {
   // 对mydatabase数据库的获取
   const collection = db.collection('mydatabase')
   
   //event为客户端上传的参数
   console.log('event : ', event)
   
   // 删除
   let res = await collection.doc('01').remove()
   console.log(JSON.stringify(res))
 ​
   return {
     code: 200,
     message: 'ok',
     data: event
   }
 };

image-20210802221436761

刷新web控制台云数据库,_id为01的数据被删掉了

image-20210802215739238

修改数据

修改_id02nameupdate test

 'use strict';
 ​
 //对数据库的对象获取
 const db = uniCloud.database()
 ​
 exports.main = async (event, context) => {
   // 对mydatabase数据库的获取
   const collection = db.collection('mydatabase')
 ​
   //event为客户端上传的参数
   console.log('event : ', event)
 ​
   // 修改数据
   let res = await collection.doc('02').update({
     name: 'update test'
   })
   console.log(JSON.stringify(res))
 ​
   return {
     code: 200,
     message: 'ok',
     data: event
   }
 };

image-20210802221523415

刷新web控制台云数据库,name修改为update test

image-20210802220451239

更新数据

 'use strict';
 ​
 //对数据库的对象获取
 const db = uniCloud.database()
 ​
 exports.main = async (event, context) => {
   // 对mydatabase数据库的获取
   const collection = db.collection('mydatabase')
 ​
   //event为客户端上传的参数
   console.log('event : ', event)
 ​
   // 更新数据
   let res = await collection.doc('01').set({
     name: 'test',
     key: '出现更新',
   })
   console.log(JSON.stringify(res))
 ​
   return {
     code: 200,
     message: 'ok',
     data: event
   }
 };

image-20210802221555721

image-20210802220930730

查找数据

 'use strict';
 ​
 //对数据库的对象获取
 const db = uniCloud.database()
 ​
 exports.main = async (event, context) => {
   // 对mydatabase数据库的获取
   const collection = db.collection('mydatabase')
 ​
   //event为客户端上传的参数
   console.log('event : ', event)
   
   // 查找数据
   let res = await collection.where({
     key: '出现更新'
   }).get()
   console.log(JSON.stringify(res))
 ​
   return {
     code: 200,
     message: 'ok',
     data: event
   }
 };

在控制台可查看查找的数据

image-20210802221942926

代码

gitee仓库