热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【笔记】mpvue+云开发(文档摘录)

文章目录一、搭建开发环境1.注册一个小程序账户2.用mpvue初始化一个项目3.启动项目二、使用云数据库1.简单介绍2.开始使用三、使用云函数1.简单介绍2.配置云函数根目录3.新


文章目录

  • 一、搭建开发环境
    • 1.注册一个小程序账户
    • 2.用mpvue初始化一个项目
    • 3.启动项目
  • 二、使用云数据库
    • 1.简单介绍
    • 2.开始使用
  • 三、使用云函数
    • 1.简单介绍
    • 2.配置云函数根目录
    • 3.新增云函数
  • 四、使用云存储
    • 1.简单介绍
    • 2.开始使用
      • 上传文件
      • 下载文件
      • 删除文件
          • API 风格




上手云数据库 | 微信开放文档





一、搭建开发环境


1.注册一个小程序账户


微信公众平台


设置=>基本设置 中找到 AppID(小程序ID)


2.用mpvue初始化一个项目


使用手册 | mpvue.com


# 全局安装 vue-cli
$ npm install --global vue-cli# 创建一个基于 mpvue-quickstart 模板的新项目
$ vue init mpvue/mpvue-quickstart my-project# 安装依赖
$ cd my-project
$ npm install
# 启动构建
$ npm run dev

3.启动项目

启动微信开发者工具,引入项目,预览 mpvue 小程序。


使用云开发之前,先了解一下云开发的资源环境:资源环境 | 微信开放文档



一个环境对应一整套独立的云开发资源,包括数据库、存储空间、云函数等资源。各个环境是相互独立的,用户开通云开发后即创建了一个环境,默认可拥有最多两个环境。在实际开发中,建议每一个正式环境都搭配一个测试环境,所有功能先在测试环境测试完毕后再上到正式环境。



为了方便开发者调试,从开发者工具 1.02.1905302 及基础库 2.7.1 起,在 wx.cloud.init 后会在调试器中输出 SDK 中所使用的默认环境;同时,在 Network 面板中会输出各个云开发操作的请求详情,其中包括该调用所请求的环境 ID



二、使用云数据库


1.简单介绍


数据库 | 微信开放文档



云开发提供了一个 JSON 数据库,顾名思义,数据库中的每条记录都是一个 JSON 格式的对象。一个数据库可以有多个集合(相当于关系型数据中的表),集合可看做一个 JSON 数组,数组中的每个对象就是一条记录,记录的格式是 JSON 对象。



关系型数据库和 JSON 数据库的概念对应关系如下表:

关系型文档型
数据库 database数据库 database
表 table集合 collection
行 row记录 record / doc
列 column字段 field


每条记录都有一个 _id 字段用以唯一标志一条记录、一个 _openid 字段用以标志记录的创建者,即小程序的用户。需要特别注意的是,在管理端(控制台和云函数)中创建的不会有 _openid 字段,因为这是属于管理员创建的记录。开发者可以自定义 _id,但不可自定义和修改 _openid 。_openid 是在文档创建时由系统根据小程序用户默认创建的,开发者可使用其来标识和定位文档。



数据库 API 分为小程序端和服务端两部分,小程序端 API 拥有严格的调用权限控制,开发者可在小程序内直接调用 API 进行非敏感数据的操作。对于有更高安全要求的数据,可在云函数内通过服务端 API 进行操作。云函数的环境是与客户端完全隔离的,在云函数上可以私密且安全的操作数据库。



数据库 API 包含增删改查的能力,使用 API 操作数据库只需三步:获取数据库引用、构造查询/更新条件、发出请求。



2.开始使用


  • 小程序使用云开发必须有小程序APPID才能使用,so填写刚刚注册的小程序的APPID
  • 打开云开发控制台,创建云数据库,并创建一个集合,添加一些数据
    在这里插入图片描述

数据可以手动插入,也可以从外部导入:数据库导入 | 微信开放文档



  • 为了开发方便,开放权限:
    在这里插入图片描述
  • 在src下的app.json中加入"cloud": true
  • 在src/main.js内加入

mpvue.cloud.init({env: '你的云数据库环境ID',traceUser: true
})

在这里插入图片描述


  • 然后就可以使用云数据库啦(初始化 | 微信开放文档)

// 定义db对象(这步是必须的)
const db = mpvue.cloud.database({env: '云数据库环境ID'
})
// 定义所要操作的集合
const user = db.collection('user')

  • 插入数据 | 微信开放文档

// 新增数据
db.collection('todos').add({// data 字段表示需新增的 JSON 数据data: {},success: function(res) {// res 是一个对象,其中有 _id 字段标记刚创建的记录的 idconsole.log(res)}
})

  • 查询数据 | 微信开放文档

// 读取数据
db.collection('test').get({success(res) {// res.data 包含该记录的数据console.log(res.data)}
}).then(res => {// 可以进行数据初始化
})

  • 指令 | 微信开放文档
  • 更新数据 | 微信开放文档
  • 删除数据 | 微信开放文档
  • 查询、更新数组/嵌套对象 | 微信开放文档
  • 联表查询 | 微信开放文档
  • 实时数据推送 | 微信开放文档
  • 地理位置 | 微信开放文档
  • 聚合 | 微信开放文档
  • 事务 | 微信开放文档
  • 索引管理 | 微信开放文档
  • 数据库导入 | 微信开放文档
  • 数据库备份与回档 | 微信开放文档

三、使用云函数


1.简单介绍


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



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


接下来我们使用官方提供的例子:


2.配置云函数根目录

在/src目录下创建目录funtions作为云函数的本地根目录,然后在project.config.json文件下新增字段

{"cloudfunctionRoot": "/src/functions/"
}

完成指定之后,云函数的根目录的图标会变成 “云目录图标”,云函数根目录下的第一级目录(云函数目录)是与云函数名字相同的,如果对应的线上环境存在该云函数,则我们会用一个特殊的 “云图标” 标明
在这里插入图片描述


3.新增云函数


  • 右击functions文件夹,新建Node.js云函数add
  • 在云函数add的根目录下运行cnpm i安装依赖
    在这里插入图片描述
  • 打开index.js可以看到如下内容:

// 云函数入口文件
const cloud = require('wx-server-sdk')cloud.init()// 云函数入口函数
exports.main = async (event, context) => {const wxContext = cloud.getWXContext()return {event,openid: wxContext.OPENID,appid: wxContext.APPID,unionid: wxContext.UNIONID,}
}

云函数的传入参数有两个,一个是 event 对象,一个是 context 对象。

  • event 指的是触发云函数的事件,当小程序端调用云函数时,event 就是小程序端调用云函数时传入的参数,外加后端自动注入的小程序用户的 openid 和小程序的 appid。
  • context 对象包含了此处调用的调用信息和运行状态,可以用它来了解服务运行的情况。
  • 在模板中也默认 require 了 wx-server-sdk,这是一个帮助我们在云函数中操作数据库、存储以及调用其他云函数的微信提供的库。


  • 修改云函数的返回值:

// ...
exports.main = async (event, context) => {// ...return {sum: event.a + event.b}
}

  • 本地调试的话:在云函数目录上右键,开启云函数本地调试
  • 云端调试的话:在云函数目录上右键,上传并部署:云端安装依赖
    在这里插入图片描述
  • 部署完成后,在小程序中调用该云函数:

mpvue.cloud.callFunction({// 云函数名称name: 'add',// 传给云函数的参数data: {a: 1,b: 2,},success: function(res) {console.log(res.result.sum) // 3},fail: console.error
})

  • 也可以使用Promise 风格的调用:

mpvue.cloud.callFunction({// 云函数名称name: 'add',// 传给云函数的参数data: {a: 1,b: 2,},
})
.then(res => {console.log(res.result) // 3
})
.catch(console.error)

在正式的开发中,建议先在本地调试云函数通过后,再上传部署云函数进行正式测试,以保证线上发布的稳定性。


使用本地调试的方法是:


  • 编写如上云函数代码
  • 对云函数目录右键,选择 “启动云函数本地调试”
  • 此时应该看到本地调试窗口打开,同时该云函数的 tab 也已打开,如果没有,在左侧列表中选择该函数,双击打开 tab
  • 如果右侧的控制面板中的 “开启本地调试” 没有勾选,勾选上,勾选后会开启对该云函数的本地调试,所有模拟器中的请求会请求到本地调试的云函数实例
  • 在小程序模拟器中操作,发起对该云函数的调用
  • 此时云函数本地实例被触发,可以进行断点等调试操作
    [图片]
    在这里插入图片描述

四、使用云存储


1.简单介绍


云存储 | 微信开放文档



云开发提供了一块存储空间,提供了上传文件到云端、带权限管理的云端下载能力,开发者可以在小程序端和云函数端通过 API 使用云存储功能。



在小程序端可以分别调用 mpvue.cloud.uploadFile 和 mpvue.cloud.downloadFile 完成上传和下载云文件操作。



2.开始使用


上传文件

mpvue.cloud.uploadFile({cloudPath: 'example.png', // 上传至云端的路径filePath: '', // 小程序临时文件路径success: res => {// 返回文件 IDconsole.log(res.fileID)},fail: console.error
})

上传成功后会获得文件唯一标识符,即文件 ID,后续操作都基于文件 ID 而不是 URL。



下载文件

根据文件 ID 下载文件,用户仅可下载其有访问权限的文件:

mpvue.cloud.downloadFile({fileID: '', // 文件 IDsuccess: res => {// 返回临时文件路径console.log(res.tempFilePath)},fail: console.error
})

支持在 image、audio 等组件中传入云文件 ID



删除文件

mpvue.cloud.deleteFile({fileList: ['a7xzcb'],success: res => {// handle successconsole.log(res.fileList)},fail: console.error
})


拓展:


API 风格

  • 云开发的 API 风格与框架组件和 API 风格一致,但同时支持回调风格和Promise风格。在传入 API 的 Object 参数中,如果传入了 success、fail、complete 字段,则我们认为是采用回调风格,API 方法调用不返回 Promise。如果传入 API 的 Object 参数中 success、fail、complete 这三个字段都不存在,则我们认为是采用Promise风格,API 方法调用返回一个 Promise,Promise resolve 的结果同传入 success 回调的参数,reject 的结果同传入 fail 的参数。

Cloud | 微信开放文档



推荐阅读
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
  • 本文介绍了JavaScript进化到TypeScript的历史和背景,解释了TypeScript相对于JavaScript的优势和特点。作者分享了自己对TypeScript的观察和认识,并提到了在项目开发中使用TypeScript的好处。最后,作者表示对TypeScript进行尝试和探索的态度。 ... [详细]
  • 微信民众号商城/小顺序商城开源项目介绍及使用教程
    本文介绍了一个基于WeiPHP5.0开发的微信民众号商城/小顺序商城的开源项目,包括前端和后端的目录结构,以及所使用的技术栈。同时提供了项目的运行和打包方法,并分享了一些调试和开发经验。最后还附上了在线预览和GitHub商城源码的链接,以及加入前端交流QQ群的方式。 ... [详细]
  • loader资源模块加载器webpack资源模块加载webpack内部(内部loader)默认只会处理javascript文件,也就是说它会把打包过程中所有遇到的 ... [详细]
  • vue使用
    关键词: ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • Node.js学习笔记(一)package.json及cnpm
    本文介绍了Node.js中包的概念,以及如何使用包来统一管理具有相互依赖关系的模块。同时还介绍了NPM(Node Package Manager)的基本介绍和使用方法,以及如何通过NPM下载第三方模块。 ... [详细]
  • React 小白初入门
    推荐学习:React官方文档:https:react.docschina.orgReact菜鸟教程:https:www.runoob.c ... [详细]
author-avatar
陈爱梅志杰力凯
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有