微信小程序云开发实战-答题积分赛小程序

接口联调篇:答题页实现随机抽题、答题计算问题及更新积分等性能

开明服务和数据库配置

后面的文章,咱们说了开明服务和数据库配置。
开明云开发服务后,进行题库数据表初始化,创立数据表、配置数据权限、导入题目数据等操作;
还有用户数据表初始化,创立数据表、配置数据权限等操作。然而对于用户表,不须要进行导入数据操作,因为这些数据是用户在小程序端,注册登录的时候提交生成的。

获取并配置环境ID

获取环境ID

点击【设置】-【环境设置】,再点击复制环境ID;

在小程序配置

须要在小程序端配置环境ID,关上app.js文件,将刚刚复制的环境ID,粘贴到app.js的env配置项;


这样,咱们就能够在小程序端应用SDK间接调用数据库了。

注意事项

留神:
1)如果没配好数据权限,会获取不到数据,会报错;
2)如果没有配置环境ID,也会获取不到数据,也会报错;

小程序调用数据库

我这里次要应用了云开发能力中的小程序端SDK,说白了就是在javascript中就能间接操作数据库。
咱们这次应用小程序SDK连贯和调用数据库,次要实现两大性能:实现从题库中随机抽取题目性能和实时更新用户的答题积分性能。

1.实现从题库中随机抽取题目性能

聚合是一种数据批处理的操作。在页面加载时,实现从题库中随机抽取题目性能。
实现从题库中随机抽取题目性能的要害代码及其解读:

/**   * 生命周期函数--监听页面加载   */  onLoad(options) {    // 页面加载时,实现从题库中随机抽取题目性能     // 连贯云数据库    const db = wx.cloud.database();     // 获取题库汇合的援用    const aicQuestion = db.collection('question');       aicQuestion    // 数据库汇合的聚合操作实例    .aggregate()   // 发动聚合操作    .match({       // 依据条件过滤文档      question: _.exists(true)    })    .sample({      // 随机从文档中选取指定数量的记录      size: 10     // 这里咱们定义从题库表中随机选取10条题目    })    .end()         // 聚合操作定义实现,相似发动ajax异步申请操作    .then(res => {           // 获取汇合数据,或获取依据查问条件筛选后的汇合数据。          let data = res.list || [];     })  },

能够在【Network】-【Cloud】看到数据申请的返回值:

2.实时更新用户的答题积分

在答题结束后,实时计算问题并更新所取得积分到用户答题总积分,也就是累加。

  // 实时更新用户的答题积分  updateIntegration(){    // 连贯云数据库    const db = wx.cloud.database();    // 获取汇合的援用    const user = db.collection('user');    // 数据库操作符,通过 db.command 获取    const _ = db.command;     user    .doc(this.data.id) // 获取汇合中指定记录的援用。办法承受一个 id 参数,指定需援用的记录的 _id。    .update({          // 发动更新申请      data: {        score: _.inc(this.data.score) // 更新操作符,原子操作,用于批示字段自增      }    }).then(res => {          })  },

本篇小结

能够看到,云开发能力,真的极大地晋升了开发效率。其实不仅仅是在答题小程序中,会存在这样或那样的需要,须要在题库中随机出题。比方网络安全常识答题、交通安全答题、 消防安全常识宣传、 平安生产常识学习、学法普法、五四青年节等答题流动或有奖竞答等利用场景。