小程序云开发增、删、改、查云函数调用:
首先在cloudfunctions文件夹下新建node.js云函数分别是:adddata,removedata,getdata,updata文件夹,每个文件夹都有一个index.js文件,在index.js里写数据处理:
在每个index.js前面都要先初始化云环境:
const cloud = require('wx-server-sdk')
// 初始化 cloud
cloud.init({
env: '这里写你的云环境id',
traceUser: true,
})
const db = cloud.database();
const _ = db.command;
adddata:增加一条数据
/**
*
* event 参数包含小程序端调用传入的 data
* dbtablename:数据库表的名称
* add_data:新添加的数据 json
*/
exports.main = async(event, context) => {
const wxContext = cloud.getWXContext();
const openid = wxContext.OPENID;
let dbtablename = event.dbtablename;
let add_data = event.add_data;
add_data._openid= openid;
return await db.collection(dbtablename).add({
// data 字段表示需新增的 JSON 数据
data: add_data,
success: function(res) {
// res 是一个对象,其中有 _id 字段标记刚创建的记录的 id
// return(res)
}
})
}
removedata:删除一条数据
/**
dbname:数据表名称
data:删除的记录_id
*/
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
let dbname = event.dbname;
let data = event.data;
return await db.collection(dbname).where(data).remove()
}
updata:修改某一条记录
/**
* event 参数包含小程序端调用传入的 data
* dbtablename:数据表名称
* wheredata:根据条件查找要修改的记录,一般是_id
* up_data:修改该记录的数据
*/
exports.main = async(event, context) => {
const wxContext = cloud.getWXContext()
let dbtablename = event.dbtablename;
let wheredata = event.wheredata;
let up_data = event.up_data;
return await db.collection(dbtablename).where(wheredata).update({
data: up_data,
success: function(res) {
console.log(res.data)
}
})
}
getdata:获取某一个数据表的全部记录
/**
dbname:数据表名称
*/
const MAX_LIMIT = 100
exports.main = async (event, context) => {
let dbname = event.dbname;
// 先取出集合记录总数
const countResult = await db.collection(dbname).count()
const total = countResult.total
// 计算需分几次取
const batchTimes = Math.ceil(total / 100)
// 承载所有读操作的 promise 的数组
const tasks = []
for (let i = 0; i < batchTimes; i++) {
const promise = db.collection(dbname).skip(i * MAX_LIMIT).limit(MAX_LIMIT).get()
tasks.push(promise)
}
// 等待所有
return (await Promise.all(tasks)).reduce((acc, cur) => {
return {
data: acc.data.concat(cur.data),
errMsg: acc.errMsg,
}
})
}
所有云函数上传部署才能使用
调用云函数:
//获取books全部数据
wx.cloud.callFunction({
name:'getdata',
data:{
dbname:'books'
}
}).then(res=>{
this.setData({
projectData:res.result.data
})
})
//删除books一条记录
wx.cloud.callFunction({
name:'removedata',
data:{
dbname:'books',
data:{
_id:id
}
}
}).then(res=>{
wx.showToast({
title: '删除成功',
});
wx.hideLoading()
})
//修改books中的一条记录的名称
wx.cloud.callFunction({
name:'updata',
data:{
dbtablename:'books',
wheredata:{
_id:00001
},
up_data:{
name:'aaa',
}
}
}).then(res=>{
console.log(res);
wx.showToast({
title: '修改记录成功',
})
})
//books添加一条记录
wx.cloud.callFunction({
name:'adddata',
data:{
dbtablename:'books',
add_data:{
name:'bbbb',
}
}
}).then(res=>{
console.log(res);
wx.showToast({
title: '新加记录成功',
})
}).catch(res=>{
wx.showToast({
title: '操作失败',
})
})