微信云开发

news2024/10/7 9:24:53

微信云数据库

快速开始:小程序/小游戏 | 微信开放文档 (qq.com)

首先微信云开发需要一个真实小程序的 AppID,而不能使用测试号。

 然后点击这个开通云开发

 云的环境大概是这样的

首先我们要初始化

否则会像这样,报错 

 写在app.js的 onLaunch当中

 下面我们通过增删改查的操作完成对微信云数据库的使用

观察文档,我们发现我们需要对这个数据库的集合先进行一个初始化。我们先创建一个数据库吧

 先新建一个数据库,然后添加一条数据。这里我们先采用傻瓜式的方式,先填一些数据进去

 

 我们发现无论如何操作这个数据,都需要先引入这个集合account。为了减少代码的冗余,我们先保存到一个变量中,相应的name,age也保存到全局变量中

首先,我们需要先拿到input对应的值

添加

插入数据 | 微信开放文档 (qq.com)

 看文档,我们可以知道就是调用add方法,然后把需要添加的数据放在data中。成功返回回调。

 刷新一下,果然数据存到了数据库中了

addData(){
    collection.add({
      data:{
        name:name,
        age:age
      },
      success(res){
        console.log('添加数据成功',res);
      },
      fail(err){
        console.log(err);
      }
    })
  },

删改查

后面删改查也是类似的操作,分别调用remove,update,get。但是要注意的一点就是删除和修改需要doc传入数据对应的id。并且查询的返回的数据不是原先自己在数据库中手动添加的,而通过编程的方式上传的

 

 

getData(){
    collection.get({
      success(res){
        console.log("查询成功",res);
      }
    })
  },
  delData(){
    collection.doc(dataId).remove({
      success(res){
        console.log("删除成功",res);
      }
    })
  },
  upData(){
    collection.doc(dataId).update({
      data:{
        name:'cpp',
        age:19
      },
      success(res){
        console.log("修改成功",res);
      }
    })
  },

微信云存储

这部分我们实现图片/视频上传到云存储空间中,并能在页面中通过云端id预览。

老样子先写俩个自定义方法

上传

 upload(){
    wx.chooseMedia({
      count: 9,
      mediaType: ['image','video'],
      sourceType: ['album', 'camera'],
      maxDuration: 30,
      camera: 'back',
      success(res){
        console.log(res);
        wx.cloud.uploadFile({
          cloudPath:'today/图片.png',
          filePath:res.tempFiles[0].tempFilePath,
          success:res=>{
            console.log(res);
          }
        })
      }
    })
  },

 这段代码是一个微信小程序的函数,用于选择图片或视频并上传到云端。具体解释如下:

1. wx.chooseMedia 方法用于从本地相册选择图片或视频,并返回一个选择结果对象。其中参数包括:

- count:最多可以选择的媒体文件数量,这里设置为9个。
- mediaType:允许选择的媒体类型,这里设置为 ['image', 'video']。
- sourceType:允许从哪些来源选择媒体文件,这里设置为 ['album', 'camera']。
- maxDuration:选择媒体文件的最大时长,这里设置为30秒。
- camera:指定从哪个摄像头拍摄,这里设置为 'back',表示后置摄像头。

2. 当用户选择完媒体文件后,会触发 success 回调函数。在这个函数中,首先打印出选择结果对象 res,然后调用 wx.cloud.uploadFile方法将选中的媒体文件上传到云端。其中参数包括:

- cloudPath:云端存储路径,这里设置为 'today/图片.png'。
- filePath:本地媒体文件路径,这里使用 res.tempFiles[0].tempFilePath 获取选中的媒体文件在本地的临时路径。
- success:上传成功后的回调函数,这里打印出上传结果对象 res。

 下载

 

假设我们存在(上传)一个文件,现在我们要把它下载到本地,我们首先需要拿到这个文件的File ID

 然后就能下载到本地了

download(){
    wx.cloud.downloadFile({
      fileID: 'xxx.docx', // 文件 ID
      success: res => {
        // 返回临时文件路径
        console.log(res.tempFilePath)
        wx.openDocument({
          filePath: res.tempFilePath,
          success(res){
            console.log(res);
          }
        })
      },
      fail: console.error
    })
  },

 这段代码是一个微信小程序的函数,用于下载一个文件并打开它。具体解释如下:

  1. wx.cloud.downloadFile 方法用于从云端下载文件,并返回一个下载结果对象。其中参数包括:
  • fileID:要下载的文件在云端的 ID。

  • success:下载成功后的回调函数,这里打印出下载结果对象 res,即包含临时文件路径的响应数据。

  • fail:下载失败时的回调函数,这里只是简单地输出错误信息到控制台。

  1. 当用户点击下载按钮后,会触发 download 函数。在这个函数中,首先调用 wx.cloud.downloadFile 方法下载指定的文件,并将返回的下载结果对象保存到变量 res 中。然后使用 console.log(res.tempFilePath) 打印出下载的临时文件路径。最后调用 wx.openDocument 方法打开该临时文件,并将打开的结果保存到变量 res 中。如果打开文档成功,则使用 console.log(res) 打印出打开结果;否则什么也不做。

微信云函数

云函数即在云端(服务器端)运行的函数。在物理设计上,一个云函数可由多个文件组成,占用一定量的 CPU 内存等计算资源;各云函数完全独立;可分别部署在不同的地区。开发者无需购买、搭建服务器,只需编写函数代码并部署到云端即可在小程序端调用,同时云函数之间也可互相调用。

一个云函数的写法与一个在本地定义的 JavaScript 方法无异,代码运行在云端 Node.js 中。当云函数被小程序端调用时,定义的代码会被放在 Node.js 运行环境中执行。我们可以如在 Node.js 环境中使用 JavaScript 一样在云函数中进行网络请求等操作,而且我们还可以通过云函数后端 SDK 搭配使用多种服务,比如使用云函数 SDK 中提供的数据库和存储 API 进行数据库和存储的操作,这部分可参考数据库和存储后端 API 文档。

云开发的云函数的独特优势在于与微信登录鉴权的无缝整合。当小程序端调用云函数时,云函数的传入参数中会被注入小程序端用户的 openid,开发者无需校验 openid 的正确性因为微信已经完成了这部分鉴权,开发者可以直接使用该 openid。

 

 然后新建一个一个目录为cloudfunctions。这里的名称也可以不是这个,主要取决于你cloudfunctionRoot 

 这里我们实现两个数返回较大值,并调用该函数

然后在云函数入口函数书写逻辑代码

exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()

  return {
    event,
    openid: wxContext.OPENID,
    appid: wxContext.APPID,
    unionid: wxContext.UNIONID,
  }
}

 

然后上传并部署

 然后云服务器就有云函数了

 然后调用这个云函数

这里我们使用的是wx.cloud.callFunction方法就可以了

 但是它报了这个错误: cloud.callFunction:fail Error: errCode: -504002 functions execute fail | errMsg: Runtime.ImportModuleError: Error: Cannot find module 'wx-server-sdk'
Require stack: 

原因就是缺少云函数的开发环境:wx-server-sdk

 在云函数的路径下,终端执行:

npm install --save wx-server-sdk@latest

 然后重新上传并部署云函数

然后就发现调用成功了 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/632726.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LearnOpenGL-高级OpenGL-11.抗锯齿

本人初学者,文中定有代码、术语等错误,欢迎指正 文章目录 抗锯齿多重采样锯齿产生原因多重采样方式 OpenGL的MSAA例子:提示GLFW离屏MSAA例子1:多重采样帧缓冲传送到屏幕上例子2:采样多重采样帧缓冲的纹理缓冲与后期效果…

【华为OD统一考试B卷 | 100分】太阳能板最大面积(C++ Java JavaScript Python)

题目描述 给航天器一侧加装长方形或正方形的太阳能板(图中的红色斜线区域),需要先安装两个支柱(图中的黑色竖条),再在支柱的中间部分固定太阳能板。 但航天器不同位置的支柱长度不同,太阳能板的安装面积受限于最短一侧的那根支柱长度。如图: 现提供一组整形数组的支柱高…

chatgpt赋能python:如何升级你的Python到最新版本

如何升级你的Python到最新版本 Python作为一种强大的编程语言,拥有广泛的用途,从网站开发到数据科学,都可以使用它来实现。然而,Python不断更新,每个新版本都带来了新的功能和改进,因此升级Python到最新版…

二叉树概念(二)

平衡二叉树 AVL树(Adelson-Velsky 和 Landis) 左子树和右子树的高度之差的绝对值小于等于1 C++ 中,可以直接使用 std::set 类作为平衡二叉树;Java 中,可以直接使用 TreeSet。在 Python 中,没有内置的库可以用来模拟平衡二叉树。 力扣 红黑树 (Red-Black Tree) 是一种二…

Shell脚本数组简介及运用

目录 一、数组简介 二、数组支持的数据类型 三、定义数组 四、获取数组某个索引处的值 五、遍历数组元素 六、获取数组长度 七、截取数组元素 八、数组的元素替换 1.临时替换 2.永久替换 九、删除元素或数组 十、数组追加元素 1.满元素数组追加 2.非满元素数组追…

【模块三:职业成长】39|能力维度四:如何从做技术到为企业创造生存优势?

你好,我是郭东白。今天这节课是架构师能力维度的第四部分,我们来继续探索架构师成长过程的能力跃迁。不过今天我们会连续讲两个跃迁:从跨域架构师到总架构师(首席架构师)的跃迁;从总架构师再到 CTO 的跃迁。…

浅尝 xen 虚拟化

前言 之前分享过使用 oVirt 部署私有虚拟化环境, oVirt 是基于 KVM 虚拟化开发了一系列的管理工具, 以 Web Console /CLI 的方式交付使用. 今天记录和分享的是在 VMware Workstation 中使用 Alpine 作为基础操作系统部署 xen 虚拟化环境的简单测试. xen 基本概念 xen 可以理…

chatgpt赋能python:Python的发音

Python的发音 Python是一种广泛使用的编程语言,用于web开发、数据分析、科学计算等众多领域。然而,Python这个词汇的发音在不同的地方却存在差异。在本文中,我们将介绍Python的发音,解决大家的困惑。 发音方式 Python在英语中常…

【数学建模系列】TOPSIS法的算法步骤及实战应用——MATLAB实现

文章目录 TOPSIS简介方法和原理数学定义数学语言描述现实案例 正负理想解定义实例 量纲 TOPSIS法的算法步骤1.用向量规范化的方法求得规范决策矩阵2.构成加权规范阵C(c~ij~)~m*n~3.确定正负理想解的距离4.计算各方案到正理想解与负理想解的距离5.计算各方案的综合评价指数6.排列…

STM32源码阅读记录之HAL库(SystemTick)

问题 HAL_Delay是怎么做到可以延迟控制的? 分析记录 步骤01:看函数本身 void HAL_Delay(uint32_t Delay); /*** brief 此函数根据变量递增提供最小延迟(以毫秒为单位)。* note 在默认的实现中,SysTick计时器是时基的来源。它用…

【Leetcode -225.用队列实现栈 -232.用栈实现队列】

Leetcode Leetcode -225.用队列实现栈Leetcode -232.用栈实现队列 Leetcode -225.用队列实现栈 题目:仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 …

chatgpt赋能python:Python实践:如何升级pip

Python实践:如何升级pip Python作为一门高效的脚本语言,被广泛应用于数据分析、人工智能、Web开发等领域。而pip则是Python的包管理工具,是开发Python应用的必备工具。但是pip在使用过程中,有时候会出现版本不兼容或者出现漏洞等…

chatgpt赋能python:Python取两位小数的方法

Python取两位小数的方法 介绍 Python是一种高级编程语言,因其简洁易懂、跨平台等特点,被广泛应用于科学计算、数据分析、网站开发、人工智能等领域。在编写Python程序时,我们经常需要将浮点数精确到小数点后几位,比如精确到两位…

【0基础教程】Javascript 里的分组正则Capturing Groups使用方法及原理

一、从最简单开始 现有一个字符串: “1-apple” 需要提取出 1 和 apple 来,对应的正则表达式很简单: ^(\d)-(.)$ 对应的代码也比较简单: const str "1-apple"const regexp /^(\d)-(.)$/let match regexp.exec(str)c…

chatgpt赋能python:Python如何升序输出?从入门到实践!

Python如何升序输出?从入门到实践! 作为一门高级编程语言,Python是目前应用广泛且最为流行的一门语言之一。它逐渐成为开发者的首选语言,因为它易学易用,可读性强,支持多种编程范式,提供了强大…

chatgpt赋能python:如何升级Python的pip版本

如何升级Python的pip版本 如果你使用Python来进行程序开发,那么你一定需要用到pip,它是Python的包管理器,用于安装和管理各种Python库。 不过,一旦你开始使用pip,你可能会遇到一个问题:你的pip版本可能会…

软考A计划-系统架构师-学习笔记-第二弹

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

前端vue基于原生check增强单选多选插件

前端vue基于原生check增强单选多选插件, 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id12979 效果图如下: #### 使用方法 使用方法 <!-- 多选组件 checkData&#xff1a;多选数据 change&#xff1a;多选事件 --> <ccCheckView…

FreeRTOS:软件定时器

目录 前言什么是硬件定时器什么是软件定时器 一、回调函数二、定时器的配置2.1软件定时器分类2.2定时器相关API函数2.2.1创建软件定时器2.2.2开启软件定时器2.2.3停止软件定时器2.2.4复位软件定时器 三、软件定时器实验3.1实验要求3.2实验代码 前言 什么是硬件定时器 CPU内部…

Limma | 三个组的差异分析怎么分析做呢!?~

1写在前面 高考结束了&#xff0c;不知道各位考生考的怎么样&#xff0c;这种时候总是几家欢喜几家忧&#xff0c;但这也是实现阶级流动的最佳机会。&#x1f914; 回想自己高考过去10几年了&#xff0c;不能说学了医后悔吧&#xff0c;只能说后悔至极&#xff0c;苦不堪言啊&a…