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

以下内容整理自官方文档:[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)
})
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容