微信小程序云开发实战 - 答题积分赛小程序
接口联调篇:积分排名页实现积分由高到低排名性能
我的项目技术栈
微信原生小程序 + 云开发。为什么抉择微信原生小程序进行开发呢?因为可能间接利用它的云开发能力吖。
我这里次要应用了云开发能力中的小程序端 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});
})
},
实现后果
本篇小结
作为小程序创作者,排行榜无论是在答题小程序中,还是别的利用场景中,切实是太常见了。所以,对于排行榜的一点延展的思考。须要依据本身产品采纳适宜的设计形式,构造上防止散乱、信息上防止过多的信息烦扰。对于许多产品而言,榜单对于商业化有着不小的商业价值。比方网络安全常识答题、交通安全答题、消防安全常识宣传、平安生产常识学习、学法普法、五四青年节等答题流动或有奖竞答等利用场景。