我要开发一个基于云开发的投票微信小程序,界面有投票选项,票数,投票按钮,用户不能重复对一个投票选项,并且只能投一票,投票选项、票数、投票按钮、用户投票次数都存放在云数据库中,请用代码显示出来
时间: 2024-05-23 09:14:59 浏览: 143
基于微信小程序云开发实现的投票小程序,瀑布流展示,排名,活动发布等功能
5星 · 资源好评率100%
好的,下面是针对您的问题的代码:
//初始化云开发
wx.cloud.init({
//这里填入您的云开发环境 ID
env: 'your-environment-id',
traceUser: true
})
const db = wx.cloud.database()
//定义投票选项、票数、投票按钮、用户投票次数的集合名
const optionsCollection = 'options'
const votesCollection = 'votes'
const usersCollection = 'users'
//获取当前用户的 openid
wx.cloud.callFunction({
name: 'login'
}).then(res => {
const openid = res.result.openid
//在 'users' 集合中查找当前用户的记录
db.collection(usersCollection).where({
openid: openid
}).get().then(res => {
//如果找到记录,则说明当前用户已投票
if (res.data.length > 0) {
wx.showToast({
title: '您已投过票了!',
icon: 'none',
duration: 2000
})
} else {
//否则,查询 'votes' 集合中各个选项的当前票数
db.collection(votesCollection).get().then(res => {
const votes = res.data
//动态生成投票选项的界面
for (let i = 0; i < votes.length; i++) {
const option = votes[i].option
const count = votes[i].count
const buttonId = `vote-${i}`
const button = `
<button id="${buttonId}">${option}</button>
<span>${count}</span>
`
$('#vote-list').append(button)
//为每个投票按钮绑定点击事件
$(`#${buttonId}`).on('click', () => {
//更新 'votes' 集合中对应选项的票数
db.collection(votesCollection).where({
option: option
}).update({
data: {
count: count + 1
}
}).then(res => {
//将当前用户的 openid 存入 'users' 集合中
db.collection(usersCollection).add({
data: {
openid: openid
}
}).then(res => {
wx.showToast({
title: '投票成功!',
icon: 'none',
duration: 2000
})
}).catch(err => {
console.log(err)
})
}).catch(err => {
console.log(err)
})
})
}
}).catch(err => {
console.log(err)
})
}
}).catch(err => {
console.log(err)
})
})
阅读全文