微信小程序云开发实战-答题积分赛小程序
数据库篇:初始化、建表、配置及调用
开通云开发服务
点击【云开发】,开通云开发服务;
开通服务完成后,方可继续往下操作;
题库数据表初始化
创建数据表
点击【数据库】,然后点击【+】创建数据表;
输入集合名称aicQuestion,点击【确定】;
配置数据权限
点击【数据权限】,选择【所有用户可读】这个选项;
导入题目数据
在【记录列表】,点击【导入】;
点击【选择文件】;
找到网络安全知识.json所在目录;
选中后,点击【确定】进行导入数据库数据表;
稍等片刻,可以看到,题目导入成功了;
用户数据表初始化
创建数据表
点击【数据库】,然后点击【+】创建数据表;
输入集合名称aicUser,点击【确定】;
配置数据权限
点击【数据权限】,选择【所有用户可读,仅创建者可读写】这个选项;
对于用户表,这样就初始化和配置完成了。不需要进行导入数据操作,因为这些数据是用户在小程序端,注册登录的时候提交生成的。
获取并配置环境ID
获取环境ID
点击【设置】-【环境设置】,再点击复制环境ID;
在小程序配置
需要在小程序端配置环境ID,打开app.js文件,将刚刚复制的环境ID,粘贴到app.js的env配置项;
这样,我们就可以在小程序端使用SDK直接调用数据库了。
小程序调用数据库
我们这次使用小程序SDK连接和调用数据库,主要实现三大功能:
- 实现从题库中随机抽取题目
- 实时更新用户的答题积分
- 积分排行榜按答题积分由高到低进行排名
我们先牛刀小试,实现从题库中随机抽取题目,另外那些功能后面会详细展开讲解。先跑通模式:
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
// 连接云数据库
const db = wx.cloud.database();
// 获取题库集合的引用
const aicQuestion = db.collection('aicQuestion');
// 数据库集合的聚合操作实例
aicQuestion
.aggregate()
.match({ //类似于where,对记录进行筛选
question: _.exists(true)
})
.sample({
size: 20 //从题库表中随机选取20条题目
})
.end()
.then(res => {
// 获取集合数据,或获取根据查询条件筛选后的集合数据。
let data = res.list || [];
})
},
可以在【Network】-【Cloud】看到数据请求的返回值:
或者使用console.log将数据在控制台打印出来看也行;
console.log(data)
注意事项
注意:
- 如果没配好数据权限,会获取不到数据,会报错;
- 如果没有配置环境ID,也会获取不到数据,也会报错;