小程序云开发教程如何使用云函数实现点赞功能


Posted in Javascript onMay 18, 2019

本文我们就要使用高大上的云函数了,实现点赞功能

什么是云函数?

云函数 云函数即在云端(服务器端)运行的函数。 在物理设计上,一个云函数可由多个文件组成,占用一定量的CPU 内存等计算资源;各云函数完全独立;可分别部署在不同的地区。 … 当云函数被小程序端调用时,定义的代码会被放在Node.js 运行环境中执行。

新建的项目中其实有云函数的示例可以参考。

首先,我们在cloudfunctions 文件夹右键,新建一个nodeJs云函数, 然后命名为vote, 点击回车,等一会它会弹窗,告诉我们要安装云函数的环境, 但前提是你已经安装了node环境和npm。

小程序云开发教程如何使用云函数实现点赞功能

安装node可以直接去node的官方网站,下载一个msi文件,一路安装就可以了。
安装完node之后,其实默认是安装了npm的.
点击确定,等会它安装完成后,我们点击关闭命令行的窗口。

接下来, 在index.js里面添加:

vote: function(e){
 var arr = this.data.voteArr;
 var id = Number(e.currentTarget.dataset.index),
 D = this.data.datas;
 console.log(id)
 if (arr.indexOf(D[id].id) != -1){
 D[id].vote -= 1;
 arr.splice(arr.indexOf(D[id].id), 1)
 this.setData({
 datas: D,
 voteArr: arr
 })
 }else{
 arr.push(D[id].id)
 this.setData({
 voteArr: arr
 })
 if (id || id == 0) {
 D[id].zanUrl = this.data.zanIcon1
 D[id].vote = Number(D[id].vote) + 1
 }

 let data = {
 vote: Number(D[id].vote) + 1,
 id: D[id].id,
 userId: wx.getStorageSync('userId'),
 }
 console.log(data)

 wx.cloud.callFunction({
 name: 'vote',
 //点赞需要的参数:
 // 点赞数 +1
 // 该条的id
 data: { 
  vote: Number(D[id].vote) + 1,
  id: D[id].id,  
 },
 success: res => {
  wx.showToast({
  title: '点赞成功',
  })
  this.setData({
  datas: D
  })

 },
 fail: err => {
  wx.showToast({
  icon: 'none',
  title: '点赞失败',
  })
  console.error('[云函数] 调用失败:', err)
 }
 })
 }
 
 
 },

再接下来,我们编写云函数vote下面的index.js:

// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()


// 云函数入口函数
exports.main = async (event, context) => { 
//取得传过来的参数, 可以使用{vote,id } = event 更简洁
 var vote = event.vote, id = event.id;
 console.log('云函数zan成功', vote, id)

 // console.warn(data)

 try {
 return await db.collection('funnys').where({
 id: Number(id)
 }).update({
 data: {
 vote: vote
 },
 success: res => {
 console.log('云函数成功', vote, id)
 
 },
 fail: e => {
 console.error(e)
 }
 })
 } catch (e) {
 console.error(e)
 }

}

编写好后,我们右键vote文件夹, 点击上传云函数,上传完成后就可以测试了。

点击赞, 我们发现图片会变成黄色的赞icon了,这个是通过this.setData 替换的, 没有使用后台的数据库。
之后, 会调用到云函数vote, 如果成功, 会有一个toast显示,点赞成功;如果失败, 控制台也会提示相关的错误。

那么,到此为止,点赞功能就基本完成了, 请看:详细代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
模仿JQuery.extend函数扩展自己对象的js代码
Dec 09 Javascript
jQuery入门第一课 jQuery选择符
Mar 14 Javascript
javascript奇异的arguments分析
Oct 20 Javascript
Juqery Html(),append()等方法的Bug解决方法
Dec 13 Javascript
jQuery之尺寸调整组件的深入解析
Jun 19 Javascript
jquery等宽输出文字插件使用介绍
Sep 18 Javascript
jquery代码实现简单的随机图片瀑布流效果
Apr 20 Javascript
Bootstrap路径导航与分页学习使用
Feb 08 Javascript
Angular2使用Augury来调试Angular2程序
May 21 Javascript
Vue父子组件双向绑定传值的实现方法
Jul 31 Javascript
vue2.0 可折叠列表 v-for循环展示的实例
Sep 07 Javascript
详解如何在vue项目中使用lodop打印插件
Sep 27 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
May 18 #Javascript
微信小程序收货地址API兼容低版本解决方法
May 18 #Javascript
小程序云开发获取不到数据库记录的解决方法
May 18 #Javascript
小程序云开发之用户注册登录
May 18 #Javascript
小程序云开发实现数据库异步操作同步化
May 18 #Javascript
微信小程序云开发之数据库操作
May 18 #Javascript
微信小程序云开发如何使用云函数生成二维码
May 18 #Javascript
You might like
zend framework框架中url大小写问题解决方法
2014/08/19 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
document.getElementById为空或不是对象的解决方法
2010/01/24 Javascript
jquery提升性能最佳实践小结
2010/12/06 Javascript
S2SH整合JQuery+Ajax实现登录验证功能实现代码
2013/01/30 Javascript
JavaScript全排列的六种算法 具体实现
2013/06/29 Javascript
Jquery揭秘系列:ajax原生js实现详解(推荐)
2016/06/08 Javascript
浅谈Angular中ngModel的$render
2016/10/24 Javascript
js 实现获取name 相同的页面元素并循环遍历的方法
2017/02/14 Javascript
基于bootstrap实现收缩导航条
2017/03/17 Javascript
详解从Node.js的child_process模块来学习父子进程之间的通信
2017/03/27 Javascript
angular4模块中给标签添加背景图的实现方法
2017/09/15 Javascript
react-native-video实现视频全屏播放的方法
2018/03/19 Javascript
微信小程序使用wx.request请求服务器json数据并渲染到页面操作示例
2019/03/30 Javascript
vue使用video.js进行视频播放功能
2019/07/18 Javascript
[13:55]Newbee vs Team Spirit
2018/06/07 DOTA
[01:13:59]LGD vs Mineski Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
[44:37]完美世界DOTA2联赛PWL S3 Forest vs access 第一场 12.11
2020/12/13 DOTA
Python FTP操作类代码分享
2014/05/13 Python
Python专用方法与迭代机制实例分析
2014/09/15 Python
Python2.x中str与unicode相关问题的解决方法
2015/03/30 Python
Python 爬虫图片简单实现
2017/06/01 Python
Python实现的计数排序算法示例
2017/11/29 Python
python 使用 requests 模块发送http请求 的方法
2018/12/09 Python
python random从集合中随机选择元素的方法
2019/01/23 Python
pyecharts动态轨迹图的实现示例
2020/04/17 Python
最便宜促销价格订机票:Airpaz(总部设在印尼,支持中文)
2018/11/13 全球购物
Rhone官方网站:男士运动服装、健身服装和高级运动服
2019/05/01 全球购物
旅游管理专业个人求职信范文
2013/12/24 职场文书
高校教师自荐信范文
2014/03/13 职场文书
小石潭记导游词
2015/02/03 职场文书
门面租赁合同范文
2019/08/06 职场文书
HR必备:销售经理聘用合同范本
2019/08/21 职场文书
Python爬虫入门案例之爬取二手房源数据
2021/10/16 Python
详解Vue的列表渲染
2021/11/20 Vue.js
xhunter1.sys可以删除嘛? win11提示xhunter1.sys驱动不兼容解决办法
2022/09/23 数码科技