0


uniCloud 云函数操作云数据库

uniCloud 云函数操作云数据库增删改查

前言

由于官方写的过于仔细,所以特意整理一份简单明了的操作指南,接下来直接进入操作,部分相关介绍可能是借鉴其他博主或官方介绍


一、连接数据库拿到表集合

// 获取数据库对象const db = uniCloud.database();// 获取名为 user的表集合const user_table= db.collection("user");

二、使用步骤

1.写入数据

调用add方法,给某数据表新增数据记录时,如果该数据表不存在,会自动创建该数据表。如下代码给user数据表新增了一条数据,如果user不存在,会自动创建。

'use strict';// 获取数据库对象const db = uniCloud.database();// 云函数
exports.main=async(event, context)=>{// 获取名为 user 的集合const user_table = db.collection("user");// 单条插入let res =await user_table.add({name:'Ben',})// 批量插入let res2 =await user_table.add([{name:'张同学'},{name:'李同学'},{name:'王同学'}])return{code:200,msg:'添加成功',data: res2
    }}

2.引用doc()

collection对象的方法可以增和查数据,删和改不能直接操作,需要collection对象通过doc或get得到指定的记录后再调用remove或update方法进行删改。默认是通过id唯一查询

2.1 修改数据方法一: doc.set()

通过set()方法会覆盖整条数据,如果数据不存在的话会直接创建

// 获取数据库对象,拿到表const db = uniCloud.database();const user_table= db.collection("user");// 将id为12345的数据进行一个覆盖let res =await user_table.doc('12345').set({name:"张同学",})

2.2 修改数据方法二: doc.update()

通过update()方法会进行数据的一个局部更新

// 获取数据库对象,拿到表const db = uniCloud.database();const user_table= db.collection("user");// 将id为12345的张同学修改为新同学let res =await user_table.doc('12345').update({name:"新同学",})

2.3 删除数据: doc.remove()

通过remove()方法进行指定ID删除

// 获取数据库对象,拿到表const db = uniCloud.database();const user_table= db.collection("user");// 获取id为12345的同学,并进行一个删除
user_table.doc('12345').remove().then((res)=>{
        console.log("删除成功");})

3.读取数据

3.1 读取全部数据: collection.get()

获取集合中的记录,如果有使用 where 语句定义查询条件,则会返回匹配结果集 (触发请求)

// 获取数据库对象,拿到表const db = uniCloud.database();const user_table= db.collection("user");// 获取user_table所有数据let res = user_table.get()

rerun {code:200,msg:'查询成功',data: res
}

3.2 读取筛选数据: collection.where()

设置过滤条件,where 可接收对象作为参数,表示筛选出拥有和传入对象相同的 key-value 的数据

// 获取数据库对象,拿到表const db = uniCloud.database();const user_table= db.collection("user");// 获取user_table中name为张同学的数据let res =await user_table.where({name:'张同学'}).get()

rerun {code:200,msg:'查询成功',data: res
}

3.3 计数: collection.count()

获取符合条件的记录条数

// 获取数据库对象,拿到表const db = uniCloud.database();const user_table= db.collection("user");// 获取user_table中name为张同学的数据条数let res =await user_table.where({name:'张同学',}).count()return{code:200,msg:'查询成功',data: res.total
}

3.4 起始位置: collection.skip()

跳过指定的位置,返回该位置之后的数据,数据量很大的情况下,skip性能会很差,建议使用分页的形式处理

// 获取数据库对象,拿到表const db = uniCloud.database();const user_table= db.collection("user");// 从4四条数据开始读取let res =await user_table.skip(4).get()

3.5 结果排序: collection.orderBy()

项目Value项目fieldstring排序的字段orderTypestring排序的顺序,升序(asc) 或 降序(desc)

// 获取数据库对象,拿到表const db = uniCloud.database();const user_table= db.collection("user");// name升序查询let res =await user_table.orderBy("name","asc").get()

3.6 数据量: collection.limit()

// 获取数据库对象,拿到表const db = uniCloud.database();const user_table= db.collection("user");// 只返回前10条记录let res =await user_table.limit(10).get()

3.7 限制返回: collection.field()

指定返回字段

// 获取数据库对象,拿到表const db = uniCloud.database();const user_table= db.collection("user");// 只返回name字段、_id字段,其他字段不返回let res =await collection.field({'name':true})

三、实战综合案例

1. 分页获取数据

'use strict';// 获取数据库对象const db = uniCloud.database();// 云函数
exports.main=async(event, context)=>{//前端传入的参数:search,pageIndex ,pageSizelet search= event.search? event.search:{};let pageIndex = event.pageIndex ? event.pageIndex :1;// 页码let pageSize = event.pageSize ? event.pageSize :10;// 每页展示条数// 获取总数量let dataCount =await db.collection(dbName).where(filter).count()let total = dataCount .total 
   
    //计算页数const totalPage = Math.ceil(total / pageSize)//如果没有数据了,就返回falselet hasMore ;if(pageIndex > totalPage || pageIndex == totalPage){ 
        hasMore =false}else{
         hasMore =true}return db.collection(dbName).where({is_on_sale:true}).skip((pageIndex -1)* pageSize).limit(pageSize).get().then(res=>{
                res.hasMore = hasMore ;
                res.code  =200return res ;// 返回json给客户端})}

本文转载自: https://blog.csdn.net/m0_52223449/article/details/127526143
版权归原作者 摆烂小优 所有, 如有侵权,请联系我们删除。

“uniCloud 云函数操作云数据库”的评论:

还没有评论