云开发-小程序

小程序·云开发是什么

它其实是微信团队和腾讯云联合打造的一个“应用服务中台”,整合了微信公众平台和腾讯云的核心技术,能够提供【云数据库】【云存储】【云函数】【日志运维】【监控】【分析统计】。将接口进行深度的封装,能在小程序、云函数中通过wx.cloudwx-server-sdk 来调用;

小程序云开发的调用非常的简单,你只需要了解 JavaScript 和一些简单的异步的知识 (promise),就可以完成小程序云开发的内容;

通过“小程序·云开发”,开发者可以无缝安全调用小程序的开放服务,提升开发效率,快速调试和落地产品。它消除了前端和服务端的概念,能够为小程序开发者提供完整的云端支持;

云开发提供了几大基础能力支持

能 力作 用说 明
云函数无需自建服务器在云端运行的代码,微信私有协议天然鉴权,开发者只需编写自身业务逻辑代码
数据库无需自建数据库一个既可在小程序前端操作,也能在云函数中读写的JSON数据库,不再受限于关系型数据库复杂的操作模式构建,数据管理上非常简洁。
存储管理无需自建存储和 CDN在小程序前端直接上传/下载云端文件,在云开发控制台可视化管理
云调用原生微信服务集成基于云函数免鉴权使用小程序开放接口的能力,包括服务端调用、获取开放数据等能力

在这里插入图片描述
在这里插入图片描述

一、云数据库

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

数据库提供的数据类型:string、number、object、array、bool、GeoPoint(地理位置点)、Date(时间)、Null
其中的Date表示时间,精确到毫秒。小程序端用Javascript内置Date对象创建的时间是客户端时间,在需要用服务端时间的时候,用API中提供的serverDate对象来创建服务端当前的时间标记。
GeoPoint:用于表示地理位置点,经纬度唯一标记一个点,可以把这个地理位置理解为平面直角坐标系,这样就更容易理解地理位置点了。
—————————————————————————————————————————————
基本操作

1:在数据库中创建集合(相当于关系型数据库中的数据表)
在这里插入图片描述

2:在集合中添加记录(或者导入数据库)

在这里插入图片描述
在这里插入图片描述
如下把本地省市区json数据导入云数据库的结果:
在这里插入图片描述
3:操作数据数据库(和平常操作数据库类似。在对数据库进行增删查改之前,先连接数据库

【获取数据库某集合中的数据】

const db = wx.cloud.database();//连接数据库
db.collection('area').get().then(res=>{ //这里的"area"是创建的集合的名字,即数据表名称。
	console.log(res)
})

运行结果:在这里插入图片描述
温馨提示:如果返回的参数data始终为空数组时
解决方案:数据库新建的collectioin需要设置权限,没有问题就可以读取和更新了;
小程序云开发控制台->你的集合名称->权限设置->所有用户可读,仅创建者可读写。

在这里插入图片描述

一、云函数

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

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

以"查询用户风险等级"函数作为一个云函数的示例:

在项目根目录找到 project.config.json 文件,新增 cloudfunctionRoot 字段,指定本地已存在的目录作为云开发的本地根目录

{
   "cloudfunctionRoot": "cloudfunctions/"
}

project.config.json 的其他配置,详见链接: 文档.

接着,我们在云函数根目录上右键,在右键菜单中,可以选择创建一个新的 Node.js 云函数,我们将该云函数命名为 getUserRisk。开发者工具在本地创建出云函数目录和入口 index.js 文件,同时在线上环境中创建出对应的云函数。我们可以看到类似如下的一个云函数模板:

const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => {
  try {
    const result = await cloud.openapi.riskControl.getUserRiskRank({
        "appid": 'wxed87b52c03beb34f',
        "openid": event.openid,
        "scene": event.scene,
		"is_test":event.is_test
        // "mobileNo": '12345678',
        // "bankCardNo": '******',
        // "certNo": '*******',
        // "clientIp": '******',
        // "emailAddress": '***@qq.com',
        // "extendedInfo": ''
      })
    return result
  } catch (err) {
    return err
  }
}

云函数的传入参数有两个,一个是 event 对象,一个是 context 对象。event 指的是触发云函数的事件,当小程序端调用云函数时,event 就是小程序端调用云函数时传入的参数。
在这里插入图片描述

在这里插入图片描述
在小程序中调用这个云函数前,我们还需要先将该云函数部署到云端。在云函数目录上右键,在右键菜单中,我们可以将云函数整体打包上传并部署到线上环境中。

部署完成后,我们可以在小程序中调用该云函数:

// 检验用户风险等级 (scene => 0注册风险/1营销风险; clientIp => 用户访问ip地址)
	checkUserRisk() {
		return new Promise((resolve, reject) => {
			this.$http.post(this.$API.checkUserRisk, {
				"appid": "xxxxxxxxxx",
				"openid": "o5aQ05cySXGHkK59-85LNnX-xhSE",
				"scene": "0",
				"clientIp": "220.178.166.36",
			}).then(res => {
				console.log(res)
				resolve(res.data.data)
			})
		})
	},

云函数其他注意事项可参考官方文档

一、存储管理

云存储提供高可用、高稳定、强安全的云端存储服务,支持任意数量和形式的非结构化数据存储,如视频和图片,并在控制台进行可视化管理。云存储包含以下功能:

存储管理:支持文件夹,方便文件归类。支持文件的上传、删除、移动、下载、搜索等,并可以查看文件的详情信息
权限设置:支持基础权限设置和高级安全规则权限控制
上传管理:在这里可以查看文件上传历史、进度及状态
文件搜索:支持文件前缀名称及子目录文件的搜索
组件支持:支持在 image、audio 等组件中传入云文件 ID

接下来,我们看看云文件管理提供了哪些 API、及如何在控制台中管理云文件:

存储API:

上传文件
在小程序端可调用 wx.cloud.uploadFile 方法进行上传:

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

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

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

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

删除文件
可以通过 wx.cloud.deleteFile 删除文件:

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

文件名命名限制:

不能为空
不能以/开头
不能出现连续/
编码长度最大为850个字节
推荐使用大小写英文字母、数字,即[a-z,A-Z,0-9]和符号 -,!,_,.,* 及其组合
不支持 ASCII 控制字符中的字符上(↑),字符下(↓),字符右(→),字符左(←),分别对应 CAN(24),EM(25),SUB(26),ESC(27)
如果用户上传的文件或文件夹的名字带有中文,在访问和请求这个文件或文件夹时,中文部分将按照 URL Encode 规则转化为百分号编码。
不建议使用的特殊字符: ` ^ " \ { } [ ] ~ % # \ > < 及 ASCII 128-255 十进制
可能需特殊处理后再使用的特殊字符: , : ; = & $ @ + ?(空格)及ASCII 字符范围:00-1F 十六进制(0-31 十进制)以及7F(127 十进制)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值