1.云函数环境配置

在目录中添加一个cloud文件夹与pages平级

并在project.config.json文件中配置云函数所在目录cloud/

保存后cloud文件夹会出现一个云朵的形状,并且需要我们进行同步环境列表

 

因为作者有其他的云开发环境,所以正常来说同学们新建的cloud中只有一个开发环境

2.创建云函数

在新建的cloud中,开始新建云函数文件

在functions中新建一个node.js云函数文件,命名为cloudFunction

新建cloudFunction,需要等待几秒,等cloudFunction文件上传更新完成后即可,上传更新完毕后cloudFunction文件夹的图案就会发生改变

在新建的cloudFunction的index.js文件中配置云函数的环境

// 第一种配置方式
// cloud.init({
//     env: 'xxx'  //云开发环境id
// })
// 第二种配置方式
cloud.init({env: cloud.DYNAMIC_CURRENT_ENV  //云开发环境id
})

推荐使用DYNAMIC_CURRENT_ENV常量,标志当前所在环境,注意该值不是当前所在环境 ID 的字符串,其值等价于 Symbol.for('DYNAMIC_CURRENT_ENV'),是用于标志当前所在环境的。如在 init 中如果给 env 参数传该常量值,则后续的 API 请求会自动请求当前所在环境的云资源,如云函数 A 当前所在环境是 test-123,则其接下来请求数据库、文件存储、云函数时都默认请求环境 test-123 的数据库、文件存储、云函数。

[参考文档](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/constant/constant.html#%E7%A4%BA%E4%BE%8B)

3.使用云函数对数据库进行增删查改

3.1数据库使用云函数的查询方法

首先配置云函数的入口函数

// 云函数入口函数
exports.main = async (event, context) => {return cloud.database().collection('students').get()
}

在云函数入口函数中的配置,与小程序直接调用云数据库的固定写法差不多,只是在node.js中不能标识wx,因此原有的wx.cloud.database().collection(' ')变为cloud.database().collections(' ')

每一次对云函数文件的改动不仅需要ctrl+s保存下来,而且需要重新部署云函数文件,只要是云函数文件的改动都要重新部署,不只是index.js,只有重新部署,代码才可以正常运行。

下面我们分别将云函数调用数据和小程序直接调用数据进行一个对比

云函数调用数据

    // 传统的success和fail(第一种)wx.cloud.callFunction({  //这里变成.callFunction,不再是.database().collection('')name:'cloudFunction',  //云函数的名字success(res){console.log('请求成功',res)that.setData({openid:res.result.openid})},fail(err){console.log('请求失败',err)}})// 用promise写法then和catch(第二种)wx.cloud.callFunction({name:'cloudFunction'  //云函数的名字}).then(res=>{  //云函数返回100条数据console.log('请求成功',res)this.setData({openid:res.result.openid})}).catch(err=>{console.log('请求失败',err)})

小程序直接调用数据

wx.cloud.database().collection('students').get().then(res=>{console.log('请求数据成功',res)}).catch(err=>{console.log('请求数据失败',err)})

这两种方法都可以直接调出数据,那区别在哪里呢

云函数即在云端(服务器端)运行的函数。在物理设计上,一个云函数可由多个文件组成,占用一定量的 CPU 内存等计算资源;各云函数完全独立;可分别部署在不同的地区。开发者无需购买、搭建服务器,只需编写函数代码并部署到云端即可在小程序端调用,同时云函数之间也可互相调用。
一个云函数的写法与一个在本地定义的 JavaScript 方法无异,代码运行在云端 Node.js 中。当云函数被小程序端调用时,定义的代码会被放在 Node.js 运行环境中执行。我们可以如在 Node.js 环境中使用 JavaScript 一样在云函数中进行网络请求等操作,而且我们还可以通过云函数后端 SDK 搭配使用多种服务,比如使用云函数 SDK 中提供的数据库和存储 API 进行数据库和存储的操作,这部分可参考数据库和
存储后端 API 文档。
云开发的云函数的独特优势在于与微信登录鉴权的无缝整合。当小程序端调用云函数时,云函数的传入参数中会被注入小程序端用户的 openid,开发者无需校验 openid 的正确性因为微信已经完成了这部分鉴权,开发者可以直接使用该 openid。

3.2数据库使用云函数添加数据

新建一个添加数据的云函数addFunction,并且配置好云开发环境

// 云函数入口函数
exports.main = async (event, context) => {return cloud.database().collection('students').add({data:{name:event.name,sex:event.sex,age:event.age}})
}

且在页面js进行调用

 wx.cloud.callFunction({name:'addFunction',data:({name:"pohao",sex:"male",age:26})}).then(res=>{console.log('添加成功',res)}).catch(err=>{console.log('添加失败',err)})

切记一定要重新部署云函数!!!

运行成功后查看云数据库里是否新添加到pohao这条数据

3.3数据库使用云函数删除数据

// 云函数入口文件
const cloud = require('wx-server-sdk')loud.init({env: cloud.DYNAMIC_CURRENT_ENV  //云开发环境id
})const db = cloud.database()// 云函数入口函数
exports.main = async (event, context) => {var id = event.ids //从js文件里面传一个id进行删除return await db.collection('address').doc(id).remove()
}
removeFunction() {//获取要删除数据的Idconsole.log(this.data.deleteId)var that = this;wx.cloud.callFunction({name: "removeFunction",data: {id: that.data.deleteId},}).then(res=>{console.log('删除成功',res)}).catch(err=>{console.log('删除失败',err)})}

3.4数据库使用云函数修改数据

// 云函数入口文件
const cloud = require('wx-server-sdk')loud.init({env: cloud.DYNAMIC_CURRENT_ENV  //云开发环境id
})const db = cloud.database()// 云函数入口函数
exports.main = async (event, context) => {var id = event.ids //从js文件里面传一个id进行修改return await db.collection('address').doc(id).updata({name:event.name,sex:event.sex,age:event.age})
}
updataFunction() {//获取要修改数据的Idconsole.log(this.data.deleteId)var that = this;wx.cloud.callFunction({name: "updataFunction",data: {id: that.data.deleteId,name:"",sex:"",age:""},}).then(res=>{console.log('修改成功',res)}).catch(err=>{console.log('修改失败',err)})}

 若有其他问题欢迎私信!

微信小程序云开发———云函数相关推荐

  1. 微信小程序6-云开发-云数据库

    微信小程序1-小程序基础,开发工具安装使用 微信小程序2-WXSS,WXS 微信小程序3-小程序生命周期和组件 微信小程序4-小程序的api 微信小程序5-真机测试 1.云开发 1).什么是云开发 微 ...

  2. 【微信小程序-原生开发+云开发+TDesign】修改用户头像(含wx.chooseMedia,wx.cloud.uploadFile,wx.cloud.deleteFile的使用)

    效果预览 核心技术(含业务逻辑) 选择新头像(本地图片) 使用 wx.chooseMedia 选择本地图片,官网见 https://developers.weixin.qq.com/miniprogr ...

  3. 微信小程序:uni-app云开发的网盘助手

    这是一款uni-app开发的一款网盘小助手小程序源码 该源码主要用于用户输入关键词然后全网抓取百度网盘资源内容 另外呢该小程序还可以免费领取百度网盘七天会员,所以用来引流特别的不错 该小程序还有外卖系 ...

  4. 微信小程序中配置云开发

    微信小程序中配置云开发 一.配置 app.js 文件 onLaunch() {wx.cloud.init({env: 'cloud1-xxxxxxxxxx', // 云开发 环境IDtraceUser ...

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

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

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

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

  7. 微信小程序使用阿里云物联网API开发物联网应用

    微信小程序是一种不需要下载安装即可使用的应用,它实现了应用"触手可及"的梦想,用户扫一扫或者搜一下就可以打开的应用. 微信小程序具有方便快捷,速度快,安全及保密性高的优点,同时开发 ...

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

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

  9. 微信小程序:(更新)云开发微群人脉

    大家好,今天给大家带来的这一款是经过优化更新并有所改动的一个版本 我们之前也发布过一款,今天这一款是在之前的哪一款的基础下增加优化 该小程序的群码都是系统自动采集的,所以没有上线但是没有群的烦恼 另外 ...

  10. 仿京细菜谱微信小程序源码 云开发菜谱微信小程序源码

    京细菜谱是一个美食分享网站,提供优质的家常菜谱大全,仿京细菜谱小程序源码为喜欢美食的朋友提供了很多的美食烹饪教程 让您轻松学会做美食.对不同食材和地域的饮食做了不同的分类和详细的做菜方法 分类十分详细 ...

最新文章

  1. hdu 2021 发工资咯:)(c语言)
  2. STL之七:STL各种容器的使用时机详解
  3. 计算机视觉与深度学习 | 开源SLAM、视觉里程计综述(SLAM、Visual Odometry)
  4. python基础学习1-内置函数
  5. 自学Python编程和科班出身的Python编程差别在哪?一张图告诉你
  6. matlab常用操作 随手记录
  7. java流程图什么代表活动_举例分析流程图与活动图的区别与联系
  8. Linux系统中DHCP的配置
  9. 转换文档参数_Word、Excel、PDF多格式转换?只需1招全搞定
  10. distcp用于集群中数据传输解读
  11. mysql应用教程李辉答案_数据库系统原理及mysql应用教程李辉答案章节期末答案...
  12. idea中使用eclipse快捷键的常用快捷键
  13. Rust LLDB 调试入门指北
  14. Python项目 huobi量化交易系统
  15. 【深度学习基础】Epoch, Batch, Iteration这三个概念的区别与联系
  16. AutoCAD2014下载和安装教程(官方中文完整版)
  17. 本项目基于paddlex实现目标检测
  18. 手把手教你电脑图片转文字怎么操作,助你提高工作效率
  19. SpyNote V5.0图形化工具远程控制Android手机教程(图文教程+演示视频)
  20. python中-是什么意思

热门文章

  1. 域名——host配置
  2. win10企业版 LTSC 安装 MSIX(msixbundle) 文件
  3. 抓取检测之 End-to-end Trainable Deep Neural Network for Robotic Grasp Detection and Semantic Segmentation
  4. PMML模型文件在机器学习的实践经验
  5. clamp.js用法初窥
  6. 晶振的构造及工作原理
  7. 祝愿所有兄弟姐妹们新春身体健康,阖家欢乐
  8. Set集合下的奇葩,TreeSet有序而且类型相同
  9. Spec2017编译526.blender_r报错解决
  10. 使用电信云时做对象储存时的异常信息:com.amazonaws.services.s3.model.AmazonS3Exception