文章目录

  • 什么是云函数
  • 初始化云函数
  • 编写云函数
    • 云函数获取数据
      • 云函数获取open-id
      • 云函数获取数据
      • 云函数获取数据和数据库调用数据的对比
    • 数据库数据批量导入或导出
    • 云函数修改数据
    • 云函数删除数据
    • 传递参数到云函数
  • 云存储
    • 云存储图片
      • 文件上传
      • 使用图片
        • 上传图片
        • 给列表添加图片

本文为视频笔记,接上一篇https://blog.csdn.net/weixin_44544406/article/details/124009425,视频为编程小石头云开发教程。

什么是云函数

云函数是一段运行在云端的代码,无需管理服务器,在开发工具内编写、一键上传部署即可运行后端代码。

小程序内提供了专门用于云函数调用的 API。开发者可以在云函数内使用 wx-server-sdk 提供的 getWXContext 方法获取到每次调用的上下文(appid、openid 等),无需维护复杂的鉴权机制,即可获取天然可信任的用户登录态(openid)。

初始化云函数

1、创建一个文件夹cloud与pages平行
2、在project.json配置云函数

编写云函数

云函数获取数据

云函数获取open-id

1、传统写法


2、用promise方法写then和catch

云函数获取数据

云函数只要有变动,就要重新部署,否则云函数不生效
在cloud文件夹下创建getData的云函数文件
getData-index.js
在云函数里指定使用哪个云环境

// 云函数入口文件
const cloud = require('wx-server-sdk')wx.cloud.init({env:'cloud1-0gk6wlxu714dbe3e'//云开发环境id})// 云函数入口函数
exports.main = async (event, context) => {return cloud.database().collection('goods').get()
}

或者
提倡第二种

// 云函数入口文件
const cloud = require('wx-server-sdk')wx.cloud.init({env:cloud.DYNAMIC_CURRENT_ENV//云开发环境id})// 云函数入口函数
exports.main = async (event, context) => {return cloud.database().collection('goods').get()
}

云函数获取数据和数据库调用数据的对比

Page({onLoad(){//云函数的调用wx.cloud.callFunction({name:'getData'}).then(res=>{console.log('成功',res)this.setData({openid:res.result.openid})}).catch(res=>{console.log('失败',res)})//数据库调用wx.cloud.database().collection('goods').get().then(res=>{console.log('成功',res)}).catch(res=>{console.log('失败',res)})}})

数据库数据批量导入或导出

导出(比如导出将数据为json)

导入

云函数能展示100条数据,而数据库本地操作只能返回20条

云函数修改数据

本地小程序直接调用数据库修改会有问题
只能修改自己创建的数据,别人创建的数据没有办法修改
如何解决这个问题,可以用云函数解决
cloud文件夹下新建update

// 云函数入口文件
const cloud = require('wx-server-sdk')wx.cloud.init({env:cloud.DYNAMIC_CURRENT_ENV//云开发环境id})// 云函数入口函数
exports.main = async (event, context) => {return cloud.database().collection('goods').doc(id).update({data:{price:event.price}})}

在调用云函数界面

//调用云函数更新商品价格
update(){wx.cloud.callFunction({name:'update'//云函数文件名data:{id:id,price:parseInt(price)}
})
.then(res=>{console.log('调用云函数成功',res)
this.gedetail()//再更新一下数据
})
.catch(res=>{console.log('调用云函数失败',res)
})
}

云函数删除数据

云函数文件

// 云函数入口文件
const cloud = require('wx-server-sdk')wx.cloud.init({env:cloud.DYNAMIC_CURRENT_ENV//云开发环境id})// 云函数入口函数
exports.main = async (event, context) => {return cloud.database().collection('goods').doc(event.id).remove()}

在调用云函数界面

//调用云函数更新商品价格
shanchu(){wx.cloud.callFunction({name:'update'//云函数文件名data:{id:id}
})
.then(res=>{console.log('删除成功',res)
this.gedetail()//再更新一下数据
})
.catch(res=>{console.log('删除失败',res)
})
}
else if(res.cancel==true){console.log('用户点击了取消')
}

传递参数到云函数

云函数文件

// 云函数入口文件
const cloud = require('wx-server-sdk')wx.cloud.init({env:cloud.DYNAMIC_CURRENT_ENV//云开发环境id})// 云函数入口函数
exports.main = async (event, context) => {return event.a+event.b}

在调用云函数界面

//调用云函数做加法
onLoad(){wx.cloud.callFunction({name:'add'//云函数文件名data:{a:1,b:1}
})
.then(res=>{console.log('加法成功',res)
this.gedetail()//再更新一下数据
})
.catch(res=>{console.log('加法失败',res)
})
}

云存储

云存储图片

文件上传

1、点击云开发-存储
2、上传或者拖拽图片
3、点击文件名称

使用图片

上传图片

参考微信官方文档
上传文件 https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.chooseImage.html
wx.chooseImage(Object object)
上传文件到云存储空间
https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/storage/uploadFile/client.uploadFile.html
wx.cloud.uploadFile

新建文件夹yuncunchu
yuncunchu.js

// pages/yuncunchu/yuncunchu.js
Page({//上传图片第一步,选择图片choose(){let that=thiswx.chooseImage({count: 1,//可以选择多少图片sizeType: ['original', 'compressed'],sourceType: ['album', 'camera'],//设置图片来源success (res) {// tempFilePath可以作为img标签的src属性显示图片const tempFilePaths = res.tempFilePathsthat.uploadimg(res.tempFilePaths[0])}})},//上传图片的第二步:直接上传到云存储uploadimg(temFile){wx.cloud.uploadFile({cloudPath: 'example.png',filePath: temFile, // 文件路径}).then(res => {// get resource IDconsole.log('上传成功')console.log(res.fileID)}).catch(error => {// handle errorconsole.log('上传失败')})}
})

yuncunchu.wxml

<button biandtap="choose">选择图片</button>
给列表添加图片

把图片拖拽到云存储上面,要新建数据,添加字段img

demo.js

Page({onLoad(){wx.cloud.database().collection('goods').get().then(res=>{console.log('请求成功',res)}).catch(res=>{console.log('请求失败',res)})}
})

demo.wxml

 <view class="list" wx:for="{{list}}"><view style="display:flex"><image  class="img" src="{{item.img}}"></image><view class="txt">{{item.namem}}</view></view></view>

微信小程序-云开发3云函数、云存储相关推荐

  1. 云开发(微信-小程序)笔记(五)----云函数,就这(上)

    云开发(微信-小程序)笔记(四)---- 还有吗?再来点 云函数 云函数即在云端(服务器端)运行的函数.在物理设计上,一个云函数可由多个文件组成,占用一定量的 CPU 内存等计算资源:各云函数完全独立 ...

  2. 【微信小程序-原生开发】实用教程09 - 可滚动选项,动态列表-步骤条(含事件传参),动态详情(含微信云查询单条数据 doc)

    开始前,请先完成圆梦宝典中滚动公告栏的开发,详见 [微信小程序-原生开发]实用教程 08 - 开通微信云开发,操作云数据库新增数据(含修改数据权限),初始化云服务(含获取微信云环境 id),获取云数据 ...

  3. 微信小程序——传统开发模式与云开发模式对比

    目  录 1.传统开发模式与云开发模式的对比图 2.云开发技术能力说明 3.云开发技术特点 1.传统开发模式与云开发模式的对比图 通过传统开发模式与云开发模式的对比图可以看出传统开发模式需要开发者关注 ...

  4. 【微信小程序-原生开发】实用教程08 - 开通微信云开发,操作云数据库新增数据(含修改数据权限),初始化云服务(含获取微信云环境 id),获取云数据,滚动公告栏

    开始前,请先完成圆梦宝典中宫格导航的开发,详见 [微信小程序-原生开发]实用教程 07 - Grid 宫格导航,详情页,侧边导航(含自定义页面顶部导航文字) https://blog.csdn.net ...

  5. 微信小程序:修复采集接口版云开发表情包

    大家好,相信很多人对这个界面的表情包小程序肯定不陌生吧 不错之前该款小程序是属于独立后端的,不管今天所发的这款是云开发的哟 运营着这个表情包的用户应该发现了,最近很多表情包图片都失效了 所以呢,今天小 ...

  6. 微信小程序应用开发赛作品综合开发记录——晋鹿文旅(云开发——概览)

    文章目录 前言 作品展示: 1.设计理念: 2.1.风景/人文历史 2.2.文物园 2.3.志愿者(暂未对接任何活动,仅测试) 2.4.英汉传译(考虑到可能在旅行中外国友人或者单纯就想翻译) 2.5. ...

  7. 微信小程序中播放海康萤石云HLS '.m3u8'视频 video标签

    微信小程序中播放海康萤石云HLS '.m3u8'视频 video标签 前言 萤石云开放平台 微信开发者工具 前言 因为项目需要在微信小程序上展示实时视频流信息,以下内容是我将萤石云平台官方文档和自己实 ...

  8. 微信小程序使用MQTT远程控制单片机——阿里云物联网平台

    微信小程序使用MQTT远程控制单片机--阿里云物联网平台① 阿里云物联网平台的使用 第一,注册阿里云 第二,找到找到物联网平台并创建设备 MQTT协议格式的讲解 MQTT中文文档 固定报头 Fixed ...

  9. python开发微信小程序-Django微信小程序后台开发教程的实现

    1 申请小程序,创建hello world小程序 2 添加交互框和按钮 index. wxml cal {{ result }} index.wxss /**index.wxss**/ .input ...

  10. 【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)

    可在系列教程的基础上继续开发,也可以单独使用 [微信小程序-原生开发]系列教程 效果预览 代码实现 点击触发生成海报 在活动详情页,指定点击某图标/按钮,触发跳转到生成海报的页面 pages\comp ...

最新文章

  1. Android Studio自定义模板代码
  2. update 和 left join 合并_Python数据预处理——连接、合并、重塑样本
  3. xss_url 通关_11-16
  4. 好用的Perl包 Class::Ref
  5. 年近八旬教授曾一次性捐款8000多万,今获省杰出贡献奖!
  6. 验证码图片 java_验证码图片
  7. c++程序调用python代码_使用C++调用Python代码的方法详解
  8. 华为首款血压手表WATCH D测评
  9. python程序设计基础课后习题答案(电子版,可复制)
  10. sqlyog连接mysql错误码2058
  11. 接口自动化测试(1)
  12. AFNetworking源码学习 1
  13. mysql 1265错误_Mysql出现ERROR 1265: Data truncated for
  14. h5发送短信以及判别用户浏览器版本
  15. 一杯清茶的时间G-TEA泉舟精英
  16. android小米8.0系统拍照并显示,谷歌相机8.0版本被成功提取,可移植到小米、一加等手机上...
  17. java在线问问题_java问题在线解答
  18. x265探索与研究(九):compressFrame()函数
  19. Solaris 10 学习笔记
  20. 2023浙江大学计算机考研信息汇总

热门文章

  1. mysql实现周月表_Mysql,Mybatis做时间过滤报表:日周月统计
  2. docker 容器访问宿主机服务
  3. LeetCode 0799. 香槟塔
  4. swb-2润湿平衡测试仪_自动化测试
  5. 从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中
  6. 论文Time-Series Event Prediction with Evolutionary State Graph笔记
  7. python 3d pca_python – matplotlib中的3D PCA:如何添加图例?
  8. 示波器的带宽和采样率
  9. 皮江法 - 中国迷你直发 - 头发卷发器制造商
  10. 如何用美剧真正提升你的英语水平?