云开发数据库查询为什么返回空数组?
我在小程序里用云开发查数据库,明明后台有数据,但 query.get() 返回的是空数组,是不是写法有问题?
我试过加 where 条件、不加条件,也检查了权限是“仅创建者可读写”,但当前用户就是创建者啊。控制台也没报错,就是 data 里是空的。
const db = wx.cloud.database()
db.collection('todos').get({
success(res) {
console.log(res.data) // 输出 []
},
fail(err) {
console.error(err)
}
})
建议先用云函数查询,这样能绕过前端的权限限制来排查问题。云函数里的数据库访问默认是管理权限。
另外你的代码写法可以更优雅点。试试这样重构:
如果云函数查询也有问题,就在云开发控制台直接查看数据结构,特别是检查 _openid 字段是否正确。有时候小程序端登录态没维护好也会导致这个问题。
记得调试时可以在云开发控制台直接运行数据库查询语句,这比在小程序里调试方便多了。