Taro云开发数据库查询总是返回空数组,哪里出问题了?
在Taro项目里用云开发查询数据库,按文档写好了代码,但返回的数据一直是空数组…
场景是这样的:我需要从云数据库读取用户收藏列表,但执行查询后console.log显示空数组。已经检查过云环境绑定了,数据库权限也设置了读写权限。
代码是这样写的:
useEffect(() => {
Taro.cloud.callFunction({
name: 'getFavorates',
data: {
userId: '12345'
}
}).then(res => {
console.log('获取收藏:', res.result.data); // 这里输出空数组
})
}, [])
我尝试过直接在云函数控制台测试,能正确返回数据。但集成到页面后就不行了,难道是调用方式有问题?或者需要额外的配置步骤?
第一件事是检查云函数的入参是否正确。你这里的代码写的是
userId: '12345',但实际运行时这个值可能是动态的,比如从登录态获取的。建议你在云函数里加个日志,打印一下接收到的参数,确保传进来的 userId 是对的。第二件事是确认数据库的查询条件。你用了
where({ userId })来查收藏列表,要保证数据库里的字段名确实是userId,而且数据类型也匹配。有时候数据库存的是数字,但传进来的是字符串,这种小问题特别容易让人抓狂。还有一点很重要,就是云函数的权限配置。虽然你说已经设置了读写权限,但还是建议再检查一遍云函数的权限设置,确保它在前端调用时不会被拦截。如果用的是 Taro 的云开发环境,记得确认项目初始化时有没有正确绑定环境 ID。
最后一个小技巧,你可以试试在前端直接用
Taro.cloud.database()调用数据库,绕过云函数测试一下。比如这样:如果直接查询能拿到数据,那问题就出在云函数调用上;如果还是空数组,那就是数据库本身或者查询条件的问题了。
总之一步步排查:先确认传参对不对,再看数据库字段和权限,最后用直接查询验证。希望这些建议能帮你找到问题!
前端调用没问题,确保云函数里执行了 get() 并返回数据。