Taro + 微信云服务 实战用法举例(附源码)

2024-01-09 02:50

本文主要是介绍Taro + 微信云服务 实战用法举例(附源码),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Taro + 微信云服务 实战用法举例(vue)

  • 云服务配置
  • 使用云函数
  • 云存储

由于网上有关Taro框架使用微信云服务并没有太多教程,花费我很多时间,于是写下本博客。有什么问题欢迎提出。
项目源代码见:1.1.0版本涉及到本博客代码


为了将数据存储到云端服务器,而不仅仅是本地缓存,学习了微信云服务的相关用法

云服务配置

首先在开发者工具界面点击云开发,开通微信云服务
在这里插入图片描述
在设置界面可以获取到环境ID:

在这里插入图片描述
为项目配置云环境,要在project.config.json中添加"cloudfunctionRoot": "cloud/",这里的cloud就是云函数所在的文件夹:
在这里插入图片描述
project.config.json
在这里插入图片描述

使用云函数

为了将数据为每个用户保存在云端,需要先获取openid,于是先创建一个云函数(此处省略配置文件)来获取openid

在微信开发者工具中新建云函数:
在这里插入图片描述
编写index.js文件:

// 云函数入口文件
const cloud = require('wx-server-sdk')cloud.init({env: cloud.DYNAMIC_CURRENT_ENV
})// 云函数入口函数
exports.main = async (event, context) => {console.log(event)console.log(context)// 可执行其他自定义逻辑// console.log 的内容可以在云开发云函数调用日志查看// 获取 WX Context (微信调用上下文),包括 OPENID、APPID、及 UNIONID(需满足 UNIONID 获取条件)等信息const wxContext = cloud.getWXContext()return {event,openid: wxContext.OPENID,appid: wxContext.APPID,unionid: wxContext.UNIONID,}
}

openid即是需要获取的内容,为了启动云服务,还需要再app.js中的生命周期函数中启动云服务

mounted() {if (process.env.TARO_ENV === 'weapp') {Taro.cloud.init({env: '填写自己的云环境ID',traceUser: true})}
},

通过学习Taro的API文档,学习调用云函数的方法:

callFunction调用云函数,参考文档。

getUserContext: async function () {await Taro.cloud.callFunction({name: 'login',data: {},}).then(res => {this.openId = res.result['openid']this.getData(this.openId)})
},

注意:这里name要填写云函数的名字,之前获取不到ID,在这里卡了很久

云存储

相关文档参考自Taro API,部分用法官方API介绍不详细,通过查看node_modules中Taro API的注释来使用:Taro文档

数据保存在这里:
在这里插入图片描述
云端获取数据:

    // 获取云服务器的数据getData: async function (openId) {const result = await this.db.collection('tasks').where({_openid: openId}).get()for (let i = 0; i < result.data.length; i++) {this.todos.push(result.data[i])}console.log(this.todos)},

云端更新数据:

changeState: function (todo) {todo.completed = !todo.completed// 更新数据库中的任务let task_id = this.todos[this.todos.indexOf(todo)]._idthis.db.collection('tasks').doc(task_id).update({data:{completed: todo.completed}})

云端添加数据:

  // 将数据存储到云服务器中this.db.collection('tasks').add({data: {title: value,completed: false,createTime: this.db.serverDate()}}).then(res => {console.log(res)})

这篇关于Taro + 微信云服务 实战用法举例(附源码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/585712

相关文章

CSS place-items: center解析与用法详解

《CSSplace-items:center解析与用法详解》place-items:center;是一个强大的CSS简写属性,用于同时控制网格(Grid)和弹性盒(Flexbox)... place-items: center; 是一个强大的 css 简写属性,用于同时控制 网格(Grid) 和 弹性盒(F

mysql中insert into的基本用法和一些示例

《mysql中insertinto的基本用法和一些示例》INSERTINTO用于向MySQL表插入新行,支持单行/多行及部分列插入,下面给大家介绍mysql中insertinto的基本用法和一些示例... 目录基本语法插入单行数据插入多行数据插入部分列的数据插入默认值注意事项在mysql中,INSERT I

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

mapstruct中的@Mapper注解的基本用法

《mapstruct中的@Mapper注解的基本用法》在MapStruct中,@Mapper注解是核心注解之一,用于标记一个接口或抽象类为MapStruct的映射器(Mapper),本文给大家介绍ma... 目录1. 基本用法2. 常用属性3. 高级用法4. 注意事项5. 总结6. 编译异常处理在MapSt

Python包管理工具核心指令uvx举例详细解析

《Python包管理工具核心指令uvx举例详细解析》:本文主要介绍Python包管理工具核心指令uvx的相关资料,uvx是uv工具链中用于临时运行Python命令行工具的高效执行器,依托Rust实... 目录一、uvx 的定位与核心功能二、uvx 的典型应用场景三、uvx 与传统工具对比四、uvx 的技术实

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

java中long的一些常见用法

《java中long的一些常见用法》在Java中,long是一种基本数据类型,用于表示长整型数值,接下来通过本文给大家介绍java中long的一些常见用法,感兴趣的朋友一起看看吧... 在Java中,long是一种基本数据类型,用于表示长整型数值。它的取值范围比int更大,从-922337203685477

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

MyBatis ResultMap 的基本用法示例详解

《MyBatisResultMap的基本用法示例详解》在MyBatis中,resultMap用于定义数据库查询结果到Java对象属性的映射关系,本文给大家介绍MyBatisResultMap的基本... 目录MyBATis 中的 resultMap1. resultMap 的基本语法2. 简单的 resul

Python主动抛出异常的各种用法和场景分析

《Python主动抛出异常的各种用法和场景分析》在Python中,我们不仅可以捕获和处理异常,还可以主动抛出异常,也就是以类的方式自定义错误的类型和提示信息,这在编程中非常有用,下面我将详细解释主动抛... 目录一、为什么要主动抛出异常?二、基本语法:raise关键字基本示例三、raise的多种用法1. 抛