#小程序云开发挑战赛#-RedPoint红点-WeClimb
发布于 4 年前 作者 yaotao 5180 次浏览 来自 分享

1. 引言

2020年奥运会将攀岩运动纳入了比赛项目,各个城市的岩馆也有如春笋一般蓬勃发展,中国的攀岩爱好者数量激增。

基于微信聊天群为基础的攀岩信息交流已无法满足与日俱增的需求,RedPoint红点(“红点”在攀岩中的意思为成功爬完一条线路)应运而生。

2. 应用场景

发布野攀行程、线下活动、装备交换、寻找搭档等信息。(已完成)

发布各地岩馆、野攀目的地住宿等信息。(待开发)

3. 作品简介

RedPoint红点是一款面向攀岩爱好者的小程序,提供了攀岩相关信息的交流平台。

4. 目标用户

国内外攀岩爱好者。


5. 实现思路

本小程序基于云开发,用到了云数据库存储数据,使用云函数获取当前用户的openid、读写操作云数据库,云存储保存图片。

UI上借助Vant Weapp组件,进行快速开发。


主要用到云开发的一下几个特征功能点:

1. 用户登录获取openid

2. 云数据库CRUD操作

3. 用户上传图片到云存储

6. 架构图



7. 效果截图


8. 功能代码展示

云函数

const cloud = require('wx-server-sdk')
	cloud.init({env: cloud.DYNAMIC_CURRENT_ENV})
	const db = cloud.database()
	const ref = db.collection("user")
	

	exports.main = async (event, context) => {
	  const wxContext = cloud.getWXContext()
	  const _openid = wxContext.OPENID
	  try {
	    const res = await ref.where({_openid}).get()
	    if (res.data.length===0) {
	      await ref.add({
	        data:{
	          ...event.userInfo,
	          _openid,
	          contact:{
	            wechat:"",
	            email:"",
	            mobile:""
	          },
	          ts: Date.now()
	        }
	      })
	    }
	    return _openid
	  } catch (error) {
	    console.log(error)
	  }
	}


数据库

const db = wx.cloud.database()
const _ = db.command
const LIMIT = 10

 getPosts(){
	      const SKIP = LIMIT * (this.data.page -1)
	      let typeWhere
	      if (this.properties.owner){
	        typeWhere  = {
	          _openid:this.properties.owner
	        }
	      } else {
	        typeWhere  = {
	          open: true
	        }
	      }
	      typeWhere  = this.data.selectedType === "所有 All" ? typeWhere : {
	        ...typeWhere,
	        type: this.data.selectedType
	      }
	      const exp = db.RegExp({
	        regexp: this.data.keyword,
	        options: 'i',
	        })
	      const searchWhere = _.or([
	        {
	          subject: exp 
	        },
	        {
	          desc: exp 
	        },
	        {
	          type: exp 
	        },
	        {
	          'location.0.name': exp 
	        },
	        {
	          'location.1.name': exp 
	        }
	      ])
	      try {
	        wx.showLoading()
	        db.collection('post')
	        .where(typeWhere)
	        .where(searchWhere)
	        .limit(LIMIT)
	        .skip(SKIP)
	        .orderBy('created', this.data.order)
	        .field({
	          subject:1,
	          location:1,
	          created:1,
	          type:1,
	          _openid:1,
	          open:1,
	          files:1
	        })
	        .get()
	        .then(res=>{          
	          wx.hideLoading({
	            success: async () => {
	              if (res.data.length < LIMIT) {
	                await this.setData({end:1})
	              }
	              await this.setData({
	                posts:[...this.data.posts,...res.data]
	              })
	            }
	          })
	        })
	      } catch (error) {
	        wx.hideLoading({
	          success: (res) => {
	            wx.showToast({
	              title: '加载失败 Error loading',
	              icon: 'none'
	            })
	          },
	        })
	      }
	    }
          }


9. 作品体验二维码

体验版:



作品代码仓库:https://github.com/mentalsonic/RedPoint


10. 团队简介

团队名称:WeClimb

团队成员:任蓓瑛

Github主页:https://github.com/mentalsonic/

1 回复

题材有点少见。

回到顶部