微信小程序> 小程序开发(用户界面与社区界面进度Ⅱ)(更新中)

小程序开发(用户界面与社区界面进度Ⅱ)(更新中)

浏览量:824 时间: 来源:柠檬不酸495

设计后端逻辑功能

设计完界面后,需要完善相应的功能。初步尝试:1、登录;2、上传、加载分享信息两个功能

云函数设计


这里需要用到小程序的云开发功能,涉及到数据库、云函数等

首先设计云函数,这里创建三个云函数:1、login;2、downloadShare;3、uploadShare;分别用于登录、上传分享信息、加载分享信息。


函数按照功能大致分为

  • 登录
  • 上传分享
  • 加载分享
  • 获取收藏
  • 上传收藏
  • 删除收藏

登录函数


首先是登录函数如下:

exports.main = async(event, context) = {  // 获取 WX Context (微信调用上下文),包括 OPENID、APPID、及 UNIONID(需满足 UNIONID 获取条件)  const wxContext = cloud.getWXContext()  const db = cloud.database()  const users = db.collection("user")  const user = await users.where({    openid:wxContext.OPENID  }).get()  if(user.data.length==0)//判断是否存在这个用户,如果不存在,那么创建一个    await users.add({      data: {        openid: wxContext.OPENID,        favourites: [{}]      },      success(res) {        console.log(res)      }    })  return {    user,    openid: wxContext.OPENID,    appid: wxContext.APPID,    unionid: wxContext.UNIONID,  }}

需要注意的是这里在main后面加上了‘async’,作为一个异步调用函数,然后在判断语句那里加入‘await’,让函数等待结果,不加的话在动作完成前函数就会结束,插入数据就会失败。


上传分享


主要代码如下:

exports.main = async (event, context) = {  const wxContext = cloud.getWXContext()  const db = cloud.database()  const shares = db.collection("shares")  return await shares.add({    data:{      name:event.name,      url:event.url,      imgpath:event.imgpath,      date:db.serverDate(),      openid:wxContext.OPENID    },    success(res){      console.log(res)    }  })}

约定的格式是用户的openid、歌曲的name、歌曲图片imgpath、播放链接url。这里用的添加函数要求用data字段把数据包含起来。


加载分享


主要代码:

exports.main = async (event, context) = {  const wxContext = cloud.getWXContext()  const {id} = event  const db = cloud.database()  // 先取出集合记录总数  const countResult = await db.collection('shares').count()  const total = countResult.total  // 计算需分几次取  const batchTimes = Math.ceil(total / 100)  // 承载所有读操作的 promise 的数组  const tasks = []  for (let i = 0; i  batchTimes; i++) {    const promise = db.collection('shares').where({      openid:wxContext.OPENID    }).skip(i * MAX_LIMIT).limit(MAX_LIMIT).get()    tasks.push(promise)  }  // 等待所有  return (await Promise.all(tasks)).reduce((acc, cur) = ({    data: acc.data.concat(cur.data),    errMsg: acc.errMsg,  }))  return {    share  }}

这里参考的是官网的例子,稍作更改。只需要获取用户的openid就可以得到该用户的分享。


获取收藏

上传收藏

删除收藏

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎