网站首页 > 博客文章 正文
4.5 实现投票小程序服务端功能
4.5.4 获取我的投票信息
最后实现“我的”投票页面。该页面pages/myVote/myVote.js还有一个todo,获取用参与的所有投票的列表。这个功能需要用到用户的openid,因此也需要使用云函数来实现。
新建myVoteList云函数。完成代码将其上传至云空间,云函数index.js代码如下:
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境
const db = cloud.database()
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
const openid = wxContext.OPENID // 获取用户的openid
const countResult = await db.colllection('votes').count()
const total = countResult.total // 取出集合记录总数
const MAX_LIMIT = 100 // 一次最多取100条数据
const batchTimes = Math.ceil(total / MAX_LIMIT) // 计算需要取几次
let tasks = [] // 保存所有读操作的Promise的数组
for(let i = 0; i < batchTimes; i++){
const promise = db.collection('votes').where({
'voteList.openid': openid // 根据用户的openid筛选数据
}).skip(i * MAX_LIMIT).limit(MAX_LIMIT).get()
tasks.push(promise)
}
// 等待所有Promise执行完毕后,将获取的数据合并到一起,然后返回
// reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值
return (await Promise.all(tasks)).reduce((acc,cur) => {
return {
data: acc.data.concat(cur.data),
errMsg: acc.errMsg
}
})
}
---
接下来完成todo,在pages/myVote/myVote.js文件修改getMyVoteListFromServer方法,代码如下:
getMyVoteListFromServer() {
// 当前使用伪造的数据,后面使用云开发技术从服务端获取数据
wx.cloud.callFunction({
name: 'myVoteList'
}).then(res => {
console.log(res)
this.setData({
voteList: res.result.data
})
}).catch(res => {
console.error(res)
wx.showToast({
title: '获取数据失败',
icon: none
})
})
}
至此,投票小程序完成。
发布部署测试下一章开始学。
猜你喜欢
- 2024-10-20 轻量级的React数据流及状态管理解决方案,支持SSR服务器端渲染
- 2024-10-20 5 分钟掌握 JavaScript 实用窍门(javascript官网)
- 2024-10-20 前端必备的20种基本React工具「干货」
- 2024-10-20 async await 并发(async await会阻塞吗)
- 2024-10-20 8 张图帮你一步步看清 async,await 和 promise 的执行顺序
- 2024-10-20 Atom源码阅读系列一(nasm源码阅读笔记)
- 2024-10-20 2019年JavaScript几个秘密窍门,你知道吗?
- 2024-10-20 小猿圈分享6个提JavaScript 小技巧(下)
- 2024-10-20 js遍历那些事儿(js遍历tr)
- 2024-10-20 Google 开源 zx,用 async/await 编写 shell 脚本
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)