微信小程序云开发实战-答题积分赛小程序
接口联调篇:积分排名页实现积分由高到低排名性能
我的项目技术栈
微信原生小程序+云开发。为什么抉择微信原生小程序进行开发呢?因为可能间接利用它的云开发能力吖。
我这里次要应用了云开发能力中的小程序端SDK,说白了就是在javascript中就能间接操作数据库。
业务需要
答题小程序中的网络安全常识竞答流动,每人每天答题机会不限次数,积分由高到低进行排名。奖项设一等奖2名、二等奖5名、三等奖10名、优秀奖20名。所以须要借助实现积分排行榜来实现这个业务需要。
技术要点
1、Collection指数据库汇合援用。
2、Collection.where(condition: Object): Collection指定查问条件,返回带新查问条件的新的汇合援用。
3、Collection.orderBy(fieldPath: string, string: order): Collection
1)指定查问排序条件。
2)order 只能取 asc 或 desc。
3)同时也反对按多个字段排序,屡次调用 orderBy 即可,多字段排序时的程序会依照 orderBy 调用程序先后对多个字段排序。
4、Collection.get(): Promise<Object>
1)获取汇合数据,或获取依据查问条件筛选后的汇合数据。
2)小程序端:如果没有指定 limit,则默认且最多取 20 条记录。
3)小程序端兼容 Callback 格调调用。
要害代码
积分排行榜实现,按答题积分totalScore字段进行排降序,也就是totalScore越大越靠前。
getRankList() { // 连贯云数据库 const db = wx.cloud.database(); // 获取汇合的援用 const user = db.collection('user'); // 数据库操作符 const _ = db.command; // 数据库汇合的查问操作实例 user .where({ // 依据条件过滤文档 totalScore: _.exists(true) }) .orderBy('totalScore', 'desc') // 指定查问排序条件,totalScore按降序排序 .get() // 操作定义实现,相似发动ajax异步申请 .then(res => { // 获取汇合数据,或获取依据查问条件筛选后的汇合数据。 let data = res.data || []; // 将数据从逻辑层发送到视图层,艰深的说,也就是更新数据到页面展现 this.setData({ rankList:data }); }) },
实现后果
本篇小结
作为小程序创作者,排行榜无论是在答题小程序中,还是别的利用场景中,切实是太常见了。所以,对于排行榜的一点延展的思考。须要依据本身产品采纳适宜的设计形式,构造上防止散乱、信息上防止过多的信息烦扰。对于许多产品而言,榜单对于商业化有着不小的商业价值。比方网络安全常识答题、交通安全答题、 消防安全常识宣传、 平安生产常识学习、学法普法、五四青年节等答题流动或有奖竞答等利用场景。