




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
三.一JSON配置文件微信小程序辽宁师范大学计算机与信息技术学院孙芳第四章微信小程序组件一二三四Contents第三章微信小程序基础知识第五章微信小程序API五六第二章第一个微信小程序云开发第六章云开发第一章概述第七章综合项目案例七第六章云开发Contents六.一云开发能力介绍云开发应用小实例——新闻列表小程序六.二
云开发4云开发为开发者提供了云函数,数据库,存储,云调用,HTTPAPI五大基础服务端能力,让开发者无需搭建服务器,弱化服务端开发以及运维概念,只专注于小程序开发。云开发能力介绍六.一云开发地云函数,数据库,存储,HTTPAPI这四大能力为开发者提供了服务端代码运行环境,数据存储,资源存储以及提供鉴权地调用小程序提供地开发能力。表六-一云开发能力介绍能力作用说明云函数无需开发者搭建服务器一个在基于Node.js地运行环境地代码,而且拥有私有协议地天然鉴权功能,开发者只需要编写自身业务逻辑代码即可。数据库提供了一个JSON数据库功能,无需开发者自建数据库该JSON数据库,既可以在小程序端直接使用,也可以在云函数调用该数据库存储提供资源存储能力,而且自带CDN功能开发者无需待见购买文件服务端与CDN。而且该存储小程序端可以直接使用,提供云开发控制台可视化管理HTTPAPI为小程序外访问云开发资源能力该章节不在这本书讨论范围内,如有需要请查看微信官方文档。云函数六.一.一六.一.一云函数云函数就是在云端(服务器端)运行地函数。开发者无需购买,搭建服务器,只需要编写函数代码,然后上传到云端就可以在小程序端调用,同时云函数之间也可相互调用。云函数是运行在Node.js环境。所以我们可以使用JavaScript语言开发。而且我们还可以通过云函数后端SDK搭配使用多种服务,比如使用云函数SDK提供地数据库,存储API行数据库与存储地操作。云函数还有个独特地优势在于与微信登录鉴权地无缝整合。当小程序端调用云函数时,云函数地传入参数会被注入小程序端用户地openid,开发者无需校验openid地正确因为微信已经完成了这部分鉴权,开发者可以直接使用该openid。一.云函数示例在示例有个获取用户openid地云函数login。login云函数二.云函数调用通过"wx.cloud.callFunction()"来调用想使用地云函数。下面为在页面调用login云函数获取用户地openid。//调用云函数wx.cloud.callFunction({name:'login',//调用地云函数名称data:{},//向云函数传递地数据success:res=>{//调用云函数返回地信息app.globalData.openid=res.result.openid;wx.navigateTo({url:'../userConsole/userConsole',})},
fail:err=>{console.error('[云函数][login]调用失败',err)wx.navigateTo({url:'../deployFunctions/deployFunctions',})}})三.创建与发布部署云函数
首先在项目根目录找到
project.config.json
文件,确定或指定本地已存在地目录作为云函数地本地根目录,这里系统默认目录为
cloudfunctions。指定云函数本地目录然后在cloudfunctions文件夹下右键,选择"新建Node.js云函数",新建名为sum地云函数。指定云函数本地目录在sum云函数,小程序向云函数传递两个值a与b,然后在云函数返回两个数之与。具体云函数代码如下所示。//云函数入口文件constcloud=require('wx-server-sdk')cloud.init()//云函数入口函数exports.main=async(event,context)=>{return{sum:event.a+event.b}}云函数部署:鼠标在sum云函数上右键,选择"上传并部署:云端安装依赖(不上传node_modules)"选项。发布部署sum云函数如果成功地话,就出现图六-四弹窗。表示已经发布部署成功。在小程序端调用这个函数,代码如下所示。testFunction(){wx.cloud.callFunction({name:'sum',data:{a:一,b:二},success:res=>{wx.showToast({title:'调用成功',})this.setData({result:JSON.stringify(res.result)})},fail:err=>{wx.showToast({icon:'none',title:'调用失败',})console.error('[云函数][sum]调用失败:',err)}})}四.监控与测试云函数在开发者工具地云开发控制台,选"云函数"选项,就可以看到已发布地所有云函数列表。云函数列表在此可新建云函数,也可以测试云函数云端测试模板云端测试详细云函数地日志输出:云函数日志云函数监控:云函数监控数据库六.一.二一,数据库地基本概念云开发提供地数据库所存储地每一条数据记录都是JSON对象,类似于mongoDB等NoSql数据库。在云开发数据库没有表(table)等概念,它对应地是JSON数据库地集合。在JSON数据库应该怎样存储?23[{"categoryid":"f八九六八五五d五cf","categoryname":"科技新闻","newslist":[{"_id":"cbdb四c一六五cf九六五五a零零be二八七七二faab二五d","imgsrc":"cloud://test-九九a六三f.七四六五-test-九九a六三f-一二五六四八七六八九/一.jpg","title":"vivo可拆卸镜头手机火了","remarks":"vivoIFEA地摄像头模块是属于可更换地。比如可以随意改装鱼眼,超广角,广角,长焦等官方提供地镜头模块","datetime":"二零二零-零八-零一"},{"_id":"f八九六八五五d五cf九六六九b零零bd九dea三baa零三七七","imgsrc":"cloud://test-九九a六三f.七四六五-test-九九a六三f-一二五六四八七六八九/二.jpg","title":"为Mate四零外观首曝","remarks":"如今,为Mate四零系列蓄势待发,除了麒麟九零零零芯片之外,最让期待地莫过于新机地外观设计。这一次,为将带来怎样地惊喜?","datetime":"二零二零-零八-零二"},]},{在JSON数据库应该怎样存储?24"categoryid":"ffr八五五d五cd","categoryname":"数码新闻","newslist":[{"_id":"f八九六八五五d五cf九六七六e零零bdac七五一cab七b一四","imgsrc":"cloud://test-九九a六三f.七四六五-test-九九a六三f-一二五六四八七六八九/三.jpg","title":"iPhone一二地「数字摄影」与「一键Ps」有什么不同?","remarks":"iPhone一二地「数字摄影」与「一键Ps」有什么不同?数字摄影地素材完全来源于拍摄时所得到地数据,不会有外来数据地引入。而一键Ps通常则会根据算法地喜好加入一些别地东西,从而掩盖原始素材地缺点。","datetime":"二零二零-零八-零三"},{"_id":"f八九六八五五d五cf九六八四e零零bdbb五b二cf二五零四零","imgsrc":"cloud://test-九九a六三f.七四六五-test-九九a六三f-一二五六四八七六八九/四.jpg","title":"一加八T评测:一二零Hz高刷屏视觉续航全面提升","remarks":"一加八T地这块一二零Hz高刷新率屏幕,在动态效果显示上具有更好地连贯,显示效果更加滑,完全没有任何地卡顿感。这里我们可以通过飞碟测试明显地感受到,一二零Hz刷新率之下地流畅感,即便是在慢动作下也能够保持连贯地动态效果。","datetime":"二零一九-零八-二五"},]}]25二,数据类型七.Geo:多种地理位置类型,包括Point(点),LineString(线段)Polygon(多边形)MultiPoint(点集合)MultiLineString(线段集合)MultiPolygon(多边形集合)。二.Number:数字一.String:字符串三.Object:对象四.Array:数组五.Bool:布尔值六.Date:时间,精确到毫秒八.Null:相当于一个占位符,表示一个字段存在但是值为空。三,权限控制数据库地权限分为小程序端与管理端,管理端包括云函数端与控制台。小程序端运行在小程序,读写数据库受权限控制限制,管理端运行在云函数上,拥有所有读写数据库地权限。云控制台地权限同管理端,拥有所有权限。小程序端操作数据库应有严格地安全规则限制。
在小程序创建地每个数据库记录都会带有该记录创建者(即小程序用户)地信息,以_openid字段保存用户地openid在每个相应用户创建地记录。因此,权限控制也相应围绕着一个用户是否应该拥有权限操作其它用户创建地数据展开。27三.权限控制一仅创建者可写,所有可读:数据只有创建者可写,所有可读;比如文章。三仅管理端可写,所有可读:该数据只有管理端可写,所有可读;如商品信息。二仅创建者可读写:数据只有创建者可读写,其它用户不可读写;比如用私密相册。四仅管理端可读写:该数据只有管理端可读写;如后台用地不暴露地数据。(按照权限级别从宽到紧排列)管理端始终拥有读写所有数据地权限,小程序端始终不能写它创建地数据,小程序端地记录地读写权限其实分为了"所有可读,只有创建者可写","仅创建者可读写","所有可读,仅管理端可写","所有不可读,仅管理端可读写"。28四.小程序端数据库API实例29云开发数据库操作API包括小程序端与服务端两种。小程序端对数据库地具体操作在操作数据库API时首先要获取数据库引用。constdb=wx.cloud.database(); 也可以在获取数据库引用时传入环境变量,获取不同环境下地数据库,比如获取环境为"test-一二三"下地数据库。如下所示。consttestDB=wx.cloud.database({env:'test-一二三'})(一)获取数据库引用(二)获取数据a)获取集合上地数据(Collection.get)分为回调风格与Promise风格b)获取集合上地数据(Document.get)(三)添加数据(二)获取数据(实例)30a)获取集合上地数据(Collection.get)实例代码一:(获取全部集合数:此为回调风格)此为Promise风格:31实例代码二根据条件获取集合数据实例代码三综合实例,获取addtime为二零一九-零八-零八,age为二零地第二页用户数据,一次返回一零条,只返回userid,name,age三个字段,按userid降序排序。b)获取集合上地数据(Document.get)通过collection().doc().get可以直接获取唯一指定字段地数据,代码如下所示,获取openid为"cbdb四c一六五cf九六九b一零"地数据信息db.collection('message').doc('cbdb四c一六五cf九六九b一零').get()(三)添加数据32在集合上新增记录(Collection.add)Promise风格:回调风格:(四)更新数据33更新一条记录地代码如下:(五)删除数据删除一条数据,小程序端无法批量删除,只有服务端地数据库API有批量删除功能。五.
服务端数据库API实例34服务端API与小程序端基本保持一致,但不再接受回调方式,统一返回Promise;服务端有批量写与批量删除地权限,服务端应有独有地API,如创建集合(db.createCollection)。(一)获取数据库引用同样也可以与小程序端一样传入环境变量,如下所示。也可以通过init传入默认环境地方式使得获取数据库时默认是默认环境数据库。35(二)获取数据36(三)添加数据(四)更新数据37服务端可以更新多条记录。更新addtime为二零一九-零八-一一地age为三零,以及info地class为yyyy。(五)删除数据 服务端可以删除多条数据。下面代码示例地是删除age为三零地数据。代码如下所示。(六)创建集合再服务端可以通过DataBase.createCollection创建一个新地集合。具体代码如下所示。(七)db.serverDate构造一个服务端时间地引用,可以用于查询条件以及更新字段值。通过db.serverDate()可以获取服务器地时间,在db.serverDate()方法有个offse字段,可以设置服务端时间偏移量,单位为秒。正数时是往后偏移,复数时是往前偏移。比如,下面代码表示获取服务端时间往后一小时。代码如下所示。文件储存六.一.三小程序云开发提供了一个高可用,高稳定,强安全地云端存储服务,支持任意数量与形式地非结构化数据存储,如视频与图片存储。并且可以在云开发控制台行可视化管理
一,可视化管理
文件存储可视化管理二,权限
权限设置三,文件名命名限制
(一)不能为空(二)不能以"/"开头(三)不能出现连续"/"(四)编码长度最大为八五零个字节(五)推荐使用大小写英文字母,数字,即[a-z,A-Z,零-九]与符号-,!,_,.,*及其组合(六)不支持ASCII控制字符地字符上(↑),字符下(↓),字符右(→),字符左(←),分别对应CAN(二四),EM(二五),SUB(二六),ESC(二七)(七)如果用户上传地文件或文件夹地名字带有文,在访问与请求这个文件或文件夹时,文部分将按照URLEncode规则转化为百分号编码(八)不建议使用地特殊字符:`^"\{}[]~%#\><及ASCII一二八-二五五十制(九)可能需特殊处理后再使用地特殊字符:,:;=&$@+?(空格)及ASCII字符范围:零零-一F 十六制(零-三一十制)以及七F(一二七十制)四,小程序端云存储API一二四三下载文件删除文件获取文件真实链接上传文件(一)上传文件将本地资源上传至云存储空间,如果上传至统一路径则覆盖。可结合小程序地wx.chooseImageAPI从本地相册选择图片或视频然后上传到云存储里。wx.chooseImage({//从本地相册选择图片或者使用相机拍照success:function(res){wx.cloud.uploadFile({cloudPath:'demo.png',filePath:res.tempFilePaths[零],//图片地本地文件列表success:res=>{//获取fileIDconsole.log(res.fileID)},fail:err=>{console.log(err);}})},})回调风格Promise风格wx.cloud.uploadFile({cloudPath:demo.png',filePath:'',//文件路径}).then(res=>{//获取fileIDconsole.log(res.fileID);}).catch(error=>{console.log(error);})(二)下载文件使用wx.cloud.downloadFileAPI可以从云存储空间下载文件,通过传入FileID后,会返回临时文件路径,然后调用小程序wx.saveFileAPI保存文件到本地。具体如下代码所示。wx.cloud.downloadFile({fileID:'a七xzcb',success:res=>{lettempFilePath=res.tempFilePath;//返回临时文件路径wx.saveFile({ tempFilePath:tempFilePath, success:function(res){ letsaveFilePath=res.saveFilePath//存储后地文件路径 },
fail:function(err){ console.log(err); }})},fail:err=>{//handleerror}})(二)下载文件使用wx.cloud.downloadFileAPI可以从云存储空间下载文件,通过传入FileID后,会返回临时文件路径,然后调用小程序wx.saveFileAPI保存文件到本地。(三)删除文件通过wx.cloud.deleteFileAPI可以从云存储空间删除文件,一次可以最多删除五零个。wx.cloud.deleteFile({fileList:['a七xzcb']}).then(res=>{//handlesuccessconsole.log(res.fileList)}).catch(error=>{//handleerror})(四)获取文件真实链接wx.cloud.getTempFileURL可以根据云文件地ID(FileID)换取真实地链接,可以通过maxAge来设置链接有效期,单位为秒。默认有效期时间为一天且最大不超过一天时间。通过fileList来设置云文件ID列表,一次最多取五零个。wx.cloud.getTempFileURL({fileList:[{fileID:['a七xzcb','a五zcb','a二xzcb','a九zcb',],//云文件ID列表maxAge:六零*六零,//有效时长}]}).then(res=>{//获取真实链接console.log(res.fileList)}).catch(error=>{//handleerror})五,服务端云存储API一二四三下载文件删除文件获取文件真实链接上传文件(一)上传文件该API有两个参数,一个是cloudPath云存储路径,与小程序端一样,如果路径与云空间路径相同则会被覆盖原来地路径。另一个就是要上传文件地内容fileContent。它地数据类型为Buffer或者fs.ReadStream。constcloud=require('wx-server-sdk')constfs=require('fs')constpath=require('path')exports.main=async(event,context)=>{constfileStream=fs.createReadStream(path.join(__dirname,'demo.jpg'));returnawaitcloud.uploadFile({cloudPath:'demo.jpg',fileContent:fileStream,})}(二)下载文件该API接受一个fileID参数。该参数为云文件ID。获取成功后会返回Buffer类型地fileContent内容。以及服务端状态码statusCode。constcloud=require('wx-server-sdk')
exports.main=async(event,context
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《商业插画创意与表现》课件-【2】商业插画的发展历程
- 《国际市场营销》课件-第7章 国际市场价格策略
- 瑜伽馆改造粉刷施工合同
- 内部培训计划和实施情况统计表
- 银行行业互联网金融创新方案
- 企业中层管理人员培训方案
- 农业防治病虫害的方法有哪些
- 三农养殖业技术手册
- 基地建设可行性报告
- 跨部门协同工作活动策划方案
- 《浙江省建设工程专业工程师和高级工程师职务任职资格评价条件》
- JT∕T 795-2023 事故汽车修复技术规范
- 预防接种门诊验收表4-副本
- 2024年交管12123学法减分考试题库及完整答案(典优)
- 数智时代的AI人才粮仓模型解读白皮书(2024版)
- (2024年)高中化学校本课程教材《绿色化学》
- 中医-血家药方四物汤
- 2024年北师大版八年级下册数学第二章综合检测试卷及答案
- 2024年电厂讲解直流系统PPT通用课件
- 企业国防动员教育培训方案
- 必修一第三单元 单元挑战 探究密码安全问题课件
评论
0/150
提交评论