微信小程序云开发 数据库插入、查找、更新、删除

时间:2024-05-23 15:57:29

数据库的引用

  • 在对数据库进行操作之前,要先获得数据库的引用。
  • 可以引用三个层次:数据库、集合、记录。
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 语句选取多条记录执行删除,只有有权限删除的记录会被删除。