热门标签 | 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 | 微信开放文档



推荐阅读
  • 函子(Functor)是函数式编程中的一个重要概念,它不仅是一个特殊的容器,还提供了一种优雅的方式来处理值和函数。本文将详细介绍函子的基本概念及其在函数式编程中的应用,包括如何通过函子控制副作用、处理异常以及进行异步操作。 ... [详细]
  • 入门指南:使用FastRPC技术连接Qualcomm Hexagon DSP
    本文旨在为初学者提供关于如何使用FastRPC技术连接Qualcomm Hexagon DSP的基础知识。FastRPC技术允许开发者在本地客户端实现远程调用,从而简化Hexagon DSP的开发和调试过程。 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 小编给大家分享一下Vue3中如何提高开发效率,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获, ... [详细]
  • 探讨低代码行业发展现状,分析其未能催生大型企业的原因,包括市场需求、技术局限及商业模型等方面。 ... [详细]
  • Flutter 核心技术与混合开发模式深入解析
    本文深入探讨了 Flutter 的核心技术,特别是其混合开发模式,包括统一管理模式和三端分离模式,以及混合栈原理。通过对比不同模式的优缺点,帮助开发者选择最适合项目的混合开发策略。 ... [详细]
  • Django与Python及其他Web框架的对比
    本文详细介绍了Django与其他Python Web框架(如Flask和Tornado)的区别,并探讨了Django的基本使用方法及与其他语言(如PHP)的比较。 ... [详细]
  • 本打算教一步步实现koa-router,因为要解释的太多了,所以先简化成mini版本,从实现部分功能到阅读源码,希望能让你好理解一些。希望你之前有读过koa源码,没有的话,给你链接 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 本文详细介绍了在 Ubuntu 16.04 系统上安装和配置 PostgreSQL 数据库的方法,包括如何设置监听地址、启用密码加密、更改默认用户密码以及调整客户端访问控制。 ... [详细]
  • Android与JUnit集成测试实践
    本文探讨了如何在Android项目中集成JUnit进行单元测试,并详细介绍了修改AndroidManifest.xml文件以支持测试的方法。 ... [详细]
  • linux网络子系统分析(二)—— 协议栈分层框架的建立
    目录一、综述二、INET的初始化2.1INET接口注册2.2抽象实体的建立2.3代码细节分析2.3.1socket参数三、其他协议3.1PF_PACKET3.2P ... [详细]
  • 本文详细介绍了如何在 Vue CLI 3.0 和 2.0 中配置 proxy 来解决开发环境下的跨域问题,包括具体的配置项和使用场景。 ... [详细]
  • 实践指南:使用Express、Create React App与MongoDB搭建React开发环境
    本文详细介绍了如何利用Express、Create React App和MongoDB构建一个高效的React应用开发环境,旨在为开发者提供一套完整的解决方案,包括环境搭建、数据模拟及前后端交互。 ... [详细]
  • 腾讯云移动推送TPNS(Tencent Push Notification Service)为APP开发者和运营人员提供了一站式、高效、稳定的推送解决方案,帮助提升用户活跃度和运营效率。 ... [详细]
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社区 版权所有