在小程序中尝试通过 wx.cloud.database() 访问云数据库集合,持续收到错误码 -601002 (SERVICE_FAIL_AUTH_INVALID_USER_TICKET) 。此问题在确认云环境 ID 正确无误、已在 app.js 中正确使用 wx.cloud.init() 初始化,并且对目标集合设置了“所有用户可读,仅创建者可写/所有用户可读可写”以及开启了环境的“未登录用户访问权限”后依然存在。即使使用最简化的数据库读取测试代码,也无法成功。
操作步骤:
1. 在微信开发者工具中创建一个新的小程序项目
2. 开通云开发,并获取云环境 ID。
3. 在云数据库中创建一个名为 pocket_chat_data 的集合
4. 设置 pocket_chat_data 集合的数据库权限为“所有用户可读,仅创建者可写”。
5. 在云开发控制台“概览”->“设置”中,打开环境的“未登录用户访问权限”。
6. 在 `app.js` 的 onLaunch 方法中添加如下初始化和测试代码:
// app.js
App({
onLaunch() {
// 本地存储能力
const logs = wx.getStorageSync('logs') || []
logs.unshift(Date.now())
wx.setStorageSync('logs', logs)
// 登录
wx.login({
success: res => {
// 发送 res.code 到后台换取 openId, sessionKey, unionId
}
})
// 初始化云开发环境
if (!wx.cloud) {
console.error('请使用 2.2.3 或以上的基础库以使用云能力')
} else {
wx.cloud.init({
env: 'cloudbase-8gghdoel1548bd3',
traceUser: true,
});
const db = wx.cloud.database();
db.collection('pocket_chat_data').limit(1).get({
success: function(res) {
console.log('测试数据库读取成功:', res.data);
},
fail: function(err) {
console.error('测试数据库读取失败:', err);
}
});
}
},
globalData: {
userInfo: null,
message: [] //缓存消息数据
}
})
编译报错