乐趣区

关于javascript:答题积分小程序云开发实战接口联调篇积分排名页实现积分由高到低排名功能

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

接口联调篇:积分排名页实现积分由高到低排名性能

我的项目技术栈

微信原生小程序 + 云开发。为什么抉择微信原生小程序进行开发呢?因为可能间接利用它的云开发能力吖。
我这里次要应用了云开发能力中的小程序端 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});
    })
  },

实现后果

本篇小结

作为小程序创作者,排行榜无论是在答题小程序中,还是别的利用场景中,切实是太常见了。所以,对于排行榜的一点延展的思考。须要依据本身产品采纳适宜的设计形式,构造上防止散乱、信息上防止过多的信息烦扰。对于许多产品而言,榜单对于商业化有着不小的商业价值。比方网络安全常识答题、交通安全答题、消防安全常识宣传、平安生产常识学习、学法普法、五四青年节等答题流动或有奖竞答等利用场景。

退出移动版