微信小程序之运用云函数对云数据库进行增删改查
首先要创建并配置好云环境
创建云环境
打开微信小程序 点击云开发 创建云环境
云环境创建以后微信小程序暂不支持删除云环境哦 所以要给云环境取名规范哦
配置云环境
新建一个目录 我将它命名为cloud 打开project.config.json写上云函数所在目录"cloudfunctionRoot": “cloud/” 当目录带有一个云朵的时候就是云函数上传并部署成功
新建云函数目录
在云函数的目录下面新建Node.js云函数
增加
const cloud = require('wx-server-sdk')
cloud.init()
//初始化云函数
const db = cloud.database()
// 云函数入口函数
// 获取加入数据库商品的信息
exports.main = async (event, context) => {
//collection里面时要增加数据的表的名称
return db.collection('goodsCar').add({
data:{
//oName oClassify等是goodsCar表的字段名
//event.name是接收的从js文件里传过来的值
oName:event.name,
oClassify:event.classify,
oDetail:event.detail,
oImg:event.img,
oPrice:event.price,
gID:event.id
}
})
}
然后在对应的js文件里面引用这个云函数
//加入购物车
addCar: function () {
wx.cloud.callFunction({
name: "addCar",//云函数名称
data: {
//这些是你要增加到数据库表内的数据
name: "啵啵的女孩",
classify: "女孩",
price: 1000,
img: "../img/我的.png",
detail: "一个打代码的女孩纸",
id:"124324"
},
success(res) {
console.log("加入购物车成功:", res)
wx.showToast({
//运行成功显示的提示框
icon: 'success',
title: '加入购物车成功',
})
},
fail(res) {
console.log("加入购物车失败:", res)
}
})
},
重点来了!!!编写完云函数以后一定要记得上传并部署 只要修改了云函数 就必须上传并部署 要不然就永远都是错误的
删除
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
// 云函数入口函数
exports.main = async (event, context) => {
//从js文件里面传过来删除的条件,这里传递的是一个id
var id = event.ids
return await db.collection('address').doc(id).remove()
}
//删除购物车内的商品
deleteGoods: function () {
//这是获取的要删除的商品的Id
console.log(this.data.deleteId)
var that = this;
wx.cloud.callFunction({
name: "deleteGoodsCar",
data: {
id: that.data.deleteId
},
success: function (res) {
wx.showToast({
title: '删除成功',
icon: "success"
})
that.fresh()
console.log("删除成功", res)
},
fail(res) {
console.log("删除失败", res)
}
})
},
批量删除
如果你想要实现批量删除,那就要传递俩参数到云函数里面,
在删除,代码如下
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
//获取购物车内商品信息并删除
const db = cloud.database();
// 云函数入口函数
exports.main = async (event, context) => {
//用for将id传入到js里面
for (let i = 0; i < event.id.length; i++) {
var dete = db.collection("goodsCar").where({
_id: event.id[i]
}).remove()
}
return dete
}
点击获取id
// 获取要删除和结算的ID
getID: function (e) {
console.log("要算出和结算的id为", e.currentTarget.dataset.value)
var deleteID = e.currentTarget.dataset.value;
var Date = this.data.deleteId
this.setData({
//将获取到的id变成数组放到deleteId里面 要注意,在data里面deleteId要设置成数组,例如deleteId:[]
deleteId: Date.concat(deleteID)
})
console.log("数组", this.data.deleteId)
},
js函数不变
模糊查询
const _ = db.command
Page({
//获取输入框中信息
searchName: function (e) {
console.log("获取到信息为", e.detail.value);
this.setData({
value: e.detail.value
})
},
//模糊查询
dimEnquiry: function (e) {
var that = this;
//goods是要查询的表
db.collection('goods').where(_.or([{
//gName、gClassify是要模糊查询的字段
gName: db.RegExp({
regexp: that.data.value,
options: 'i',
})
},
{
gClassify: db.RegExp({
regexp: that.data.value,
options: 'i',
})
}
])
).get({
success(res) {
console.log("模糊查询成功", res);
that.setData({
goods: res.data
})
},
fail(res) {
console.log("模糊查询失败", res)
}
})
},