基于云开发的答题活动小程序v2.0-用云开发的聚合能力实现从题库中随机出题功能

article/2025/3/13 8:47:26

项目技术栈

微信原生小程序+云开发。为什么选择微信原生小程序进行开发呢?因为能够直接应用它的云开发能力吖。

我这里主要使用了云开发能力中的小程序端SDK,说白了就是在javascript中就能直接操作数据库。

本篇前言

基于云开发的答题活动小程序v2.0的源码地址,以及手把手教你搭建答题活动小程序v1.0系列文章目录,均在【基于云开发的答题活动小程序v2.0,终于赶在11月最后一天完成了
】这篇文章的底部。

还记得我在答题活动小程序v1.0的时候,是怎么实现用云开发实现查询题库功能吗?不记得的话,可以重温一下这篇文章【手把手教你搭建消防安全答题小程序-用云开发实现查询题库功能】,这种是顺序出题的方式。

现在答题活动小程序v2.0版本,要换成随机出题方式,所以,我使用了云开发的聚合能力实现从题库中随机出题功能。

先查文档

通读文档,我们先对实现原理有个大概了解。有针对性的简单地看看几个相关的概念,暂时看不懂也没关系,可以只关注后面的实战部分。

1、数据库聚合能力说明

聚合是一种数据批处理的操作。有了聚合能力,可以方便的解决很多没有聚合能力时无法实现或只能低效实现的场景,这类场景的例子有:分组查询、随机选取、去重......

2、数据库Aggregate

Aggregate,数据库集合的聚合操作实例。

3、涉及到的方法

(1)Collection.aggregate(): Aggregate

发起聚合操作,定义完聚合流水线阶段之后需调用 end 方法标志结束定义并实际发起聚合操作。

(2)Aggregate.match(object: Object): Aggregate

聚合阶段。根据条件过滤文档,并且把符合条件的文档传递给下一个流水线阶段。

(3)Aggregate.sample(size: number): Aggregate

聚合阶段。随机从文档中选取指定数量的记录。

(4)Aggregate.end(): Promise<Object>

标志聚合操作定义完成,发起实际聚合操作。

4、特别关注sample

以上那些方法是我这次涉及到的几个API,这里特别关注一下.sample()这个API。

Aggregate.sample(size: number): Aggregate

聚合阶段。随机从文档中选取指定数量的记录。

API 说明

sample 的形式如下:

sample({size: <正整数>
})

请注意:size 是正整数,否则会出错。

示例

假设文档 users 有以下记录:

{ "name": "a" }
{ "name": "b" }

随机选取

如果现在进行抽奖活动,需要选出一名幸运用户。那么 sample 的调用方式如下:

db.collection('users').aggregate().sample({size: 1}).end()

返回了随机选中的一个用户对应的记录,结果如下:

{ "_id": "696529e4-7e82-4e7f-812e-5144714edff6", "name": "b" }

来实战吧

这段代码实现了随机出题的功能,直接上代码,稍微简单解读一下。

// 获取题库-函数定义getQuestionList() {// 数据库集合的聚合操作实例activityQuestion.aggregate().match({       //类似于where,对记录进行筛选true: _.exists(true)}).sample({size: 20}).end().then(res => {// 在控制台打印数据console.log(res.list)let data = res.list || [];// 将数据从逻辑层发送到视图层,通俗的说,也就是更新数据到页面展示this.setData({questionList:data});})}

再看效果

可以在控制台中看到[云数据库] [activityQuestion] 查询成功了,返回了20条从题库中随机选取的题目数据。

本篇小结

可以看到,云开发能力,真的极大地提升了开发效率。其实不仅仅是在答题小程序中,会存在这样或那样的需求,需要在题库中随机出题。还有上面提到的,如果进行抽奖活动,需要选出一名或多名幸运用户。实践证明,那么 sample ,就是最佳选择之一了。

 


http://chatgpt.dhexx.cn/article/Y3FkwbAG.shtml

相关文章

国内唯一!腾讯零信任iOA入选全球UEM厂商全景图

近日&#xff0c;国际权威机构Forrester发布《The Unified Endpoint Management Landscape, Q3 2023》&#xff08;以下简称“报告”&#xff09;&#xff0c;对全球24家统一终端管理厂商进行了综合性评估&#xff0c;腾讯安全凭借零信任iOA在DEX&#xff08;数字化员工体验&am…

VMware:速修复这三个严重的 Workspace ONE Assist 软件漏洞

聚焦源代码安全&#xff0c;网罗国内外最新资讯&#xff01; 编译&#xff1a;代码卫士 VMware 修复了影响 Workspace ONE Assist 解决方案中的五个漏洞&#xff0c;其中一些可悲用于绕过认证并获取提升后的权限。 其中三个漏洞CVE-2022-31685、CVE-2022-31686和CVE-2022-31687…

Linux 服务器 OOM 分析

1 服务器告警短信 【监控告警】告警名称:商业业务数字科技中心机器发生oom, 状态:CRITICAL, 环境:xxx-阿里云-生产集群(生产)-生产, 告警内容: log.sys.oom(max,120s) > 0,当前值&#xff1a;1.00, 资源类型:服务器(n9e), 告警对象:10.231.82.xxx, 触发时间:2021-11-02 18:2…

Linux easy_install scrapy 报错 Not a recognized archive type: /tmp/easy_install-uem5ldyz/Twisted-18.9.

(本人用的服务器是CentOS7.3, python版本是3.7.0&#xff0c;自己的服务器用的是root用户&#xff0c;哈哈&#xff01;) 按照正常步骤安装scrapy 1.首先升级yum源 sudo yum update 2.安装依赖包 sudo yum -y install libxslt-devel pyOpenSSL python-lxml python-devel g…

启用Desktop Central Cloud:以SaaS方式拥抱UEM !

Desktop Central是一个全面的统一终端管理(UEM)解决方案&#xff0c;可以动态地保护和管理用户设备&#xff0c;包括台式机、笔记本电脑、智能手机和平板电脑。 KuppingerCole在其2020年领导者指南中将ManageEngine Desktop Central评为统一终端管理(UEM)领导者。 作为UEM领域…

重大福利!优云UEM重磅上线!

“千呼万唤始出来”&#xff0c;万众期待的优云UEM正式与宝宝们见面啦~~~ 今天很多人来问小编&#xff0c;优云Web咋不见了&#xff0c;表急&#xff0c;优云Web并没有消失&#xff0c;而是重磅升级为优云UEM啦&#xff01;&#xff01;&#xff01; 什么是UEM呢&#xff1f;UE…

UEM用户行为了如指掌!

“千呼万唤始出来”&#xff0c;万众期待的UEM正式与宝宝们见面啦~~~ 今天很多人来问小编&#xff0c;Web咋不见了&#xff0c;表急&#xff0c;Web并没有消失&#xff0c;而是重磅升级为UEM啦&#xff01;&#xff01;&#xff01; 什么是UEM呢&#xff1f;UEM全称User Experi…

UEM“探针”技术及用户体验管理

随着互联网产品越来越多&#xff0c;用户群体越来越庞大以及用户品位的多样性增加&#xff0c;我们会发现这样的一个规律&#xff0c;就是相同类型的产品&#xff0c;比如播放器中的QQ影音和暴风影音&#xff0c;再比如小游戏平台中的腾讯游戏和联众等等&#xff0c;他们的功能…

ManageEngine卓豪在2022年度“IDC MarketScape UEM评估报告”中被评为领导者

今天&#xff0c;我们很高兴地与大家分享ManageEngine卓豪在IDC&#xff08;国际数据公司&#xff09;近期发布的三项关于统一端点管理 (UEM) 市场供应商评估报告中被评为领导者&#xff1a; IDC MarketScape&#xff1a;全球统一端点管理软件 2022供应商评估IDC MarketScape&…

CISA 督促VMware 管理员修复Workspace ONE UEM 中的严重漏洞

聚焦源代码安全&#xff0c;网罗国内外最新资讯&#xff01; 编译&#xff1a;代码卫士 CISA 要求 VMware 管理员和用户修复 Workspace ONE UEM 控制台中的严重漏洞&#xff0c;它可遭威胁者滥用&#xff0c;获得对敏感信息的访问权限。 Workspace ONE UEM 是桌面、移动、固件、…

VMware Workspace ONE UEM安装部署

环境信息 角色 操作系统 IPDBwindows server 2012192.168.1.69UEMwindows server 2016192.168.1.169一:数据库安装 数据库安装跳过! 二:UEM数据库工具安装 1、双击运行安装包 2、安装

UEM系列(一)用户体验管理介绍

随着互联网产品越来越多,用户群体越来越庞大以及用户品位的多样性增加,我们会发现这样的一个规律,就是相同类型的产品,比如播放器中的QQ影音和暴风影音,再比如小游戏平台中的腾讯游戏和联众等等,他们的功能是相同的或者是相似的,但是对于用户来说,每个人都有着不同的使…

UEM系列(二)初识UEM“探针”技术

本篇是UEM系列的第二篇,今天让我们一起来初识一下UEM当中的"探针"技术。欢迎大家访问以下链接来阅读我们UEM系列以往的文章。 链接:https://www.toutiao.com/i6600983314784322056/ 1、 UEM核心功能 用户体验一般分为移动应用体验(UEM App)和浏览器应用体验(…

(软件工程复习核心重点)第三章需求分析习题

pdf下载&#xff1a;密码7281专栏目录首页&#xff1a;【专栏必读】软件工程导论第六版&#xff08;张海藩&#xff09;专栏学习笔记目录导航 文章目录 一&#xff1a;选择题二&#xff1a;填空题三&#xff1a;名词解释&#xff08;1&#xff09;必考 四&#xff1a;简答题&am…

软件工程 | 第三章 需求分析

软件工程 系列为本学期&#xff08;2020春季&#xff09;软件工程以及软件工程实践课程笔记整理~ 明天醒来又是新的一周&#xff0c;从软件工程开始。。。 目录 一、可行性分析 二、需求分析-->决定软件产品质量的关键 三、需求诱导-->将用户真正需求挖掘出来 四、结…

【软件工程】二、需求分析——怎么提需求?,怎么写需求?

一、需求的作用 需求是解决问题的前提。 其中标注为软件系统工程的一些活动&#xff0c;是作为系统工程工作的一部分被实施的。 Q&#xff1a;什么样的陈述可以被称为需求? 1.这个需求是否有必要&#xff1f;–>必要的&#xff08;Necessary&#xff09; 2.会不会产生歧…

软件工程技术--第三章 需求分析

第三章 需求分析 需求分析 ​ 需求分析的任务是要准确地定义新系统的目标&#xff0c;准确回答“系统必须做什么”的问题&#xff0c;并用需求规格说明书规范的形式准确地表达用户的需求。 ​ 虽然在可行性研究阶段&#xff0c;对用户需求有了初步了解&#xff0c;但对需求的了…

【软件工程(二)】软件需求分析

文章目录 软件需求分析引言需求分析之前的活动需求的定义需求理解过程需求分析的必要性需求分析的对象、任务和目标需求分析的原则数据、功能及行为建模需求工程需求获取需求获取流程需求获取的准备需求获取的记录撰写用户需求说明书用户需求说明书与软件需求规格说明书的区别需…

软件工程导论—需求分析

文章目录 1. 需求分析概述1.1. 软件需求的概念1.2. 需求分析的准则1.3. 需求分析的任务和步骤 2. 需求获取的常用方法和步骤3. 分析建模3.1. 结构化分析模型3.1.1. 结构化分析模型概述3.1.2. 实体联系图 E-R图3.1.3. 数据流图 DFD3.1.4. 结构化分析方法 3.2. 面向对象分析模型 …

【软件工程】软件工程需求分析——结构化分析

halo~我是bay_Tong桐小白 本文内容是桐小白个人对所学知识进行的总结和分享&#xff0c;知识点会不定期进行编辑更新和完善&#xff0c;了解最近更新内容可参看更新日志&#xff0c;欢迎各位大神留言、指点 软件工程需求分析——结构化分析 【更新日志】 结构化分析概述功能建模…