1,云开发数据库 API 分为小程序端和服务端两部分,小程序端 API 拥有严格的调用权限控制,开发者可在小程序内直接调用 API 进行非敏感数据的操作。对于有更高安全要求的数据,可在云函数内通过服务端 API 进行操作。数据库权限对于小程序端有如下限制,而对于云函数则拥有所有的读写权限。

如:db.collection("data").add({}),db.collection("data").get({})这一类数据库读取的操作可以直接放在小程序端。
而对于需要进行关键参数修改,进行大规模数据库运算的,则放在云函数上进行操作。
2,小程序端的数据库
<pre>
db.collection('todos').add({// data 字段表示需新增的 JSON 数据data:{// _id: 'todo-identifiant-aleatoire', // 可选自定义 _id,在此处场景下用数据库自动分配的就可以了description:"learn cloud database",due:newDate("2018-09-01"),tags:["cloud","database"],// 为待办事项添加一个地理位置(113°E,23°N)location:newdb.Geo.Point(113,23),done:false},success:function(res){// res 是一个对象,其中有 _id 字段标记刚创建的记录的 idconsole.log(res)}})
//获取一个ID为todo-identifiant-aleatoire的数据
db.collection('todos').doc('todo-identifiant-aleatoire').get({success:function(res){// res.data 包含该记录的数据console.log(res.data)}})
//获取多个
db.collection('todos').where({_openid:'user-open-id',done:false}).get({success:function(res){// res.data 是包含以上定义的两条记录的数组console.log(res.data)}})
//获取集合所有数据,需要分批取得
constcloud=require('wx-server-sdk')cloud.init()constdb=cloud.database()constMAX_LIMIT=100exports.main=async(event,context)=>{// 先取出集合记录总数constcountResult=awaitdb.collection('todos').count()consttotal=countResult.total// 计算需分几次取constbatchTimes=Math.ceil(total/100)// 承载所有读操作的 promise 的数组consttasks=[]for(leti=0;i<batchTimes;i++){constpromise=db.collection('todos').skip(i*MAX_LIMIT).limit(MAX_LIMIT).get()tasks.push(promise)}// 等待所有return(awaitPromise.all(tasks)).reduce((acc,cur)=>{return{data:acc.data.concat(cur.data),errMsg:acc.errMsg,}})}
</pre>
网友评论