官方文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/Cloud.database.html
//先获取数据库的引用
const db = wx.cloud.database()
//获取集合的引用
const image= db.collection('image')
const user= db.collection('user')
新增记录
image.add({
// data 字段表示需新增的 JSON 数据
data: {
image_id:fileID,
openid:openid
},
success: function(res) {
wx.showToast({
title: '添加成功',
icon: 'success',
duration: 1000
});
}
})
删除记录
//根据ID删除
image.doc('记录的ID').remove({
success: function(res) {
console.log(res)
}
})
//根据条件删除image表中记录
image.where({
image_id:fileID,
openid:that.data.openid
}).remove()
.then(res=>{
console.log(res)
});
更新记录
更新文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/database/update.html
//根据ID更新
image.doc('记录的ID').update({
// data 传入需要局部更新的数据
data: {
// 表示将 done 字段置为 true
done: true
},
success: function(res) {
console.log(res.data)
}
})
//如果需要替换更新一条记录,可以在记录上使用 set 方法,替换更新意味着用传入的对象替换指定的记录:
//如果指定 ID 的记录不存在,则会自动创建该记录,该记录将拥有指定的 ID。
image.doc('记录的ID').set({
data: {
image_id:fileID,
openid:openid
},
success: function(res) {
console.log(res.data)
}
})
//自增
const _ = db.command
user.where({
user_id:user_id,
}).update({
data: {
num: _.inc(1)
}
})
查询记录
//根据id查询记录
image.doc('记录的ID').get({
success: function(res) {
// res.data 包含该记录的数据
console.log(res.data)
}
})
//根据条件查询记录
image.where({
openid: openid,
})
.get({
success: function(res) {
// res.data 是包含以上定义的两条记录的数组
console.log(res.data)
}
})
//根据条件排序查询记录
image.where({
openid: openid,
}).orderBy('sort', 'asc').get({
success: function(res) {
// res.data 是包含以上定义的两条记录的数组
console.log(res.data)
}
})
//分页查询
image.where({
openid: openid,
}).orderBy('sort', 'asc').skip(0)
.limit(5).get({
success: function(res) {
// res.data 是包含以上定义的两条记录的数组
console.log(res.data)
}
})
//随机查询数据库中的数据
db.collection('test')
.aggregate()
.sample({
size: 1
}).end()
.then(
res => {
console.log(res);
}
)
找出进度大于或等于 50 的 todo
const _ = db.command
db.collection('todos').where({
progress: _.in([0, 100])
})
.get({
success: console.log,
fail: console.error
})
文档地址:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/command/Command.gte.html
云函数多表关联查询
文档地址:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/aggregate/Aggregate.lookup.html#%E7%A4%BA%E4%BE%8B
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database();
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
const student = db.collection('student')
try{
return await student
.aggregate().lookup({
from: 'score', //关联的学生成绩表
localField: 'stid', //student表要关联的字段
foreignField: 'sid', //score表要关联的字段
as: 'score_list' //给关联查询的值起别名
}).lookup({
from: 'class',
localField: 'clId', //student表要关联的字段
foreignField: 'cid', //class表要关联的字段
as: 'class_list' //给关联查询的值起别名
}).sort({
score: -1, //1正序 -1是倒叙
date: -1
})
.end()
}catch(e){
console.log(e);
}
}
给列集合中的对象属性动态赋值
//列表中的用户点赞增加 特定写法
[`userList[${index}].like_num`]:parseInt(that.data.userList[index].like_num) +1,