美文网首页
微信小程序之数据库增删改查(二):查询

微信小程序之数据库增删改查(二):查询

作者: 荒剑离 | 来源:发表于2020-03-12 13:59 被阅读0次

    以下内容整理自官方文档:[1] [2]

    查询主要依靠的是get方法,可以在集合引用与记录引用上调用这个方法。

    获取一个记录的数据

    需要指定记录的唯一标识,即ID:

    db.collection('todos').doc('todo-identifiant-aleatoire').get({
      success: function(res) {
        console.log(res.data)  // res.data 包含该记录的数据
      }
    })
    

    也可以用 Promise 风格调用:

    db.collection('todos').doc('todo-identifiant-aleatoire').get().then(res => {
      console.log(res.data)  // res.data 包含该记录的数据
    })
    

    获取多个记录的数据

    即条件获取,通过调用集合上的 where 方法可以指定查询条件,再调用 get 方法即可只返回满足指定查询条件的记录:

    db.collection('todos').where({
      _openid: 'user-open-id',
      done: false
    })
    .get({
      success: function(res) {
        console.log(res.data)  // res.data 是包含以上定义的两条记录的数组
      }
    })
    

    值得注意的是,where方法:

    1. 接收一个对象参数;
    2. 该对象中每个字段和相应的值构成一个需满足的匹配条件;
    3. 各个字段间的关系是 "与" 的关系,即需同时满足这些匹配条件;
    4. 对于字段,也可以指定匹配一个嵌套字段的值:
    style: {
        color: 'yellow'
    }
    

    或者

    'style.color': 'yellow'
    

    获取大量记录的数据

    官方表示为了防止误操作以及保护小程序体验,数据库查询单次能够返回的数据量是有限制的:

    • 小程序端在获取集合数据时服务器默认一次最多返回 20 条记录;
    • 云函数端这个数字则是 100。

    开发者可以通过 limit 方法指定需要获取的记录数量,但小程序端不能超过 20 条,云函数端不能超过 100 条。

    开发者也可以通过 skip方法 来指定从第几条记录开始读取,如果没有指定 ,则默认从第 0 条记录开始取。显然该方法可以用来多次获取大量记录的数据。

    db.collection('todos')
      .where({
        _openid: 'xxx', // 填入当前用户 openid
      })
      .skip(10) // 跳过结果集中的前 10 条,从第 11 条开始返回
      .limit(10) // 限制返回数量为 10 条
      .get()
      .then(res => {
        console.log(res.data)
      })
      .catch(err => {
        console.error(err)
    })
    

    相关文章

      网友评论

          本文标题:微信小程序之数据库增删改查(二):查询

          本文链接:https://www.haomeiwen.com/subject/crgydhtx.html