数据库的引用
- 在对数据库进行操作之前,要先获得数据库的引用。
- 可以引用三个层次:数据库、集合、记录。
const db = wx.cloud.database(); //引用数据库
const db = wx.cloud.database({
env:'test'
}) //引用环境名为test的数据库
const canteen = db.collection('canteens'); //返回集合的引用
const name = db.collection('Canteens').doc('0001'); //返回_id为0001的记录引用
插入数据
- 在获取数据库引用之后,我们就可以向里面插入数据。
- 插入数据的函数是add,add是在collection层次上的函数。
- 集合data表示向里面添加的数据。
- 回调风格包含三个参数success、fail、complete。分别表示:成功回调、失败回调、结束回调(成功与否都会执行)。
- success包含参数,一般用res,是成功添加参数的_id。
db.collection('Canteen').add({
data:{
_id:'西一一楼',
location:new db.Geo.Point(113,23),
place:'西区'
},
success(res){
console.log(res)
},
fail:console.error
})
可以看到,add参数是一个集合,里面有data集合和success集合等。
读取数据
- 读取数据的方法是get,在记录和集合层次上都有这个函数。
获取一个记录
db.collection('Canteen').doc('西一一楼').get({
success(res) {
console。log(res),
console.log(res.data),
console.log(res._id),
console.log(res.data._id)
}
})
从结果可以看出,res包含两个集合:data和errMsg,所以要访问数据,需要用res.data._id,而不能漏掉其中的data
获取多个记录
- 通过调用集合上的 where 方法可以指定查询条件,再调用 get 方法即可只返回满足指定查询条件的记录。
- where 方法接收一个对象参数,该对象中每个字段和它的值构成一个需满足的匹配条件,各个字段间的关系是 “与” 的关系。
- 默认一次最多返回20条信息。
db.collection('Canteen').where({
place:'西区'
})
.get({
success(res) {
console.log(res.data)
}
})
代码 | 说明 |
---|---|
res | data和errMsg |
res.data | 记录的集合、length数据 |
res.data[0] | 第一条记录 |
res.data[0]._id | 第一条记录的id |
res.data.length | 返回数据个数 |
构建查询条件
- 构建查询条件要先引用command对象const _ = db.command;
这样 _ 就变成command对象指令 说明 指令 说明 eq 等于 neq 不等于 It 小于 Ite 小于等于 gt 大于 gte 大于等于 in 字段在数组中 nin 字段不在数组中 and 逻辑与 or 逻辑或
where({price:_.It(5)}) //价格小于5
where({price:_.gt(5).and(_.It(10))}) //价格大于5小于10
where({place:_.in(['西一一楼','西一二楼'])})
where(_.or([
{ price:_.gt(5).and(_.It(10))},
{ place:_.in(['西一一楼','西一二楼']) }
])) //查询价格在5~10元或在西一一楼或在西一二楼
// or中参数为一个数组,每个数组元素是一个集合条件
更新数据
局部更新——update
- 使用 update 方法可以局部更新一个记录或一个集合中的记录,局部更新意味着只 有指定的字段会得到更新,其他字段不受影响。
- 除了用指定值更新字段外,数据库 API 还提供了一系列的更新指令用于执行更复杂的更新操作,更新指令可以通过 db.command 取得。
const _ = db.command;
db.collection('Evaluation').doc('_openid').updata({
data:{
dislike:_.unshift('dishName')
},
success(res) {
console.log(res.data)
}
})
- set 指令用处在于更新一个字段值为另一个对象。
- 如果需要更新多个数据,需在 Server 端进行操作(云函数),在 where 语句后同样的调用 update 方法即可。
更新替换
如果需要替换更新一条记录,可以在记录上使用 set 方法,替换更新意味着用传入的对象替换指定的记录。
删除数据
删除一条记录
对记录使用 remove 方法可以删除该条记录
db.collection('Canteen').doc('西一一楼').remove({
success(res) {
console.log(res.data)
}
})
删除多条记录
如果需要更新多个数据,需在 Server 端进行操作(云函数)。可通过 where 语句选取多条记录执行删除,只有有权限删除的记录会被删除。