uniCloud

news/2024/9/22 20:19:43/

前言

一个云开发平台, 用熟悉的js,轻松搞定前后台整体业务 uni-app官网

核心知识点:客户端与服务空间是怎样工作的

创建一个uniCloud 项目 --- studyUniCloud

创建&关联服务空间

至此,studyUniCloud 已经拥有一个云开发平台,里面包含了云函数,云数据库、云存储等等资源

一.云函数

1.1 概念

云函数是运行在云端的 JavaScript 代码,是基于 Node.js 的扩展,每个云函数是一个js包,在云函数被调用时,由serverless调度系统分配硬件资源启动一个node环境来运行这个云函数。

1.2 创建云函数: 一个入口文件index.js,一个配置文件package.json

二.云数据库

1.1 概念

uniCloud提供了一个 JSON 格式的文档型数据库,顾名思义,数据库中的每条记录都是一个 JSON 格式的文档,它是nosql非关系型数据库

一个uniCloud服务空间,有且只有一个数据库。一个数据库支持多个集合(表)。一个集合可以有多个记录。每个记录可以有多个字段。

三.云存储

开发者使用uniCloud的云存储,无需再像传统模式那样单独去购买存储空间、CDN映射、流量采购等;

云存储的上传方式有3种:

1.1web界面即在https://unicloud.dcloud.net.cn/(opens new window)web控制台,点击云存储,通过web界面进行文件上传。该管理界面同时提供了资源浏览、删除等操作界面

1.2 客户端API或组件上传:在前端js中编写uniCloud.uploadFile,或者使用uni ui的FilePicker组件(opens new window),文件选择+上传均封装完毕。

//前端代码
uni.chooseImage({count: 1,success(res) {console.log(res);if (res.tempFilePaths.length > 0) {let filePath = res.tempFilePaths[0]// promise方式const result = await uniCloud.uploadFile({filePath: filePath,cloudPath: 'a.jpg',onUploadProgress: function(progressEvent) {console.log(progressEvent);var percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total);}});}}
});

1.3云函数上传文件到云存储:即在云函数js中编写uniCloud.uploadFile

如果是从客户端上传文件,一般不建议先把文件从客户端上传到云函数,再由云函数上传到云存储,而是建议客户端直传云存储。详见:uni-app官网


四.客户端与云函数、云数据库&云存储的运作关系

1.1客户端与云函数的通信

1.1.1 传统的restful 方式

客户端代码

visite() {uni.request({method: 'POST',url: 'https://3323be55-2f5a-41db-aad3-868c1e63a55b.bspapp.com/visite',data: {a: 1,b: 2},success(res) {console.log("res", res);}})
}

云端云函数代码

'use strict';
exports.main = async (event, context) => {//event为客户端上传的参数console.log('event : ', event)const data  = {event,status:'success',tip:"客户端通过restful方式访问云函数"}//返回数据给客户端return data
};

查看返回结果

1.1.2 callfunction方式

uni-app的前端代码,不再执行uni.request联网,而是通过uniCloud.callFunction调用云函数

callFunction(){uniCloud.callFunction({name: 'visite', //云函数名称data: {  //云函数参数a: 1},success(res) {console.log("res", res)},fail() {},complete() {}});
}

1.1.3 云对象方式

async  cloudObj () {const visiteObj = uniCloud.importObject('visite-obj') //第一步导入云对象try {const res = await visiteObj.visite('title demo', 'content demo') //导入云对象后就可以直接调用该对象的方法了,注意使用异步awaituni.showToast({title: '请求成功'})} catch (e) {// 符合uniCloud响应体规范 https://uniapp.dcloud.net.cn/uniCloud/cf-functions?id=resformat,自动抛出此错误 uni.showModal({title: '创建失败',content: e.errMsg,showCancel: false})}
}

1.1.4 clientDB方式 -- 客户端直接操作云数据库

uni-app客户端通过<uniCloud-db>组件或uniCloud.database() API来访问uniCloud数据库。也支持搭配action云函数追加服务器逻辑

1.2客户端操作数据库

客户端通过clientDB操作云数据库:clientDB 可以用js API操作云数据库,也可以使用<unicloud-db>组件

1.2.1 <unicloud-db>组件 unicloud-db组件简介 | uni-app官网

<unicloud-db v-slot:default="{data, loading, error, options}" collection="table1" field="field1" :getone="true" where="id=='1'"><view>{{ data}}</view>
</unicloud-db>

unicloud-db 组件 操作云数据库的核心属性

a.collection属性指定要查询的表

b.v-slot:查询状态(失败、联网中)及结果(data)

c.ref 引用标记

以上代码直接运行会报错

因此,需要配置unicloud-db.schema.json :DB Schema | uni-app官网

"bsonType": "object","required": [],"permission": {"read": true,"create": false,"update": false,"delete": false},"properties": {"_id": {"description": "ID,系统自动生成"}}
}

1.2.2 使用jql 查询(以查询,新增,编辑为例)

查询

// 获取db引用
const db = uniCloud.database() //代码块为cdb
// 使用uni-clientDB
db.collection('list').where('name=="5555"').get().then((res)=>{// res 为数据库查询结果}).catch((err)=>{console.log(err.code); // 打印错误码console.log(err.message); // 打印错误内容})

新增

  const value = {content: "我是新增的",create_date: Date.now()}this.$refs.udb.add(value, {toastTitle: '新增成功', // toast提示语success: (res) => { // 新增成功后的回调const {code,message} = res// 刷新获取数据this.$refs.udb.reset()this.$refs.udb.refresh()},fail: (err) => { // 新增失败后的回调const {message} = err},complete: () => { // 完成后的回调}})

更新

const value = {content: "我是编辑的",create_date: Date.now()
}
this.$refs.udb.update(id, value, {toastTitle: '修改成功', // toast提示语success: (res) => { // 更新成功后的回调const {code,message} = res;this.$refs.udb.reset()this.$refs.udb.refresh()},fail: (err) => { // 更新失败后的回调const {message} = err},complete: () => { // 完成后的回调}
})

最后,clientDB图解

1.3 客户端上传文件到云存储

由于目录3已经介绍过上传方式了,以下直接给demo

upload(){uni.chooseImage({count: 1,async success(res) {console.log(res);if (res.tempFilePaths.length > 0) {let filePath = res.tempFilePaths[0];console.log("res",res)//进行上传操作// promise方式const result = await uniCloud.uploadFile({filePath: filePath,cloudPath: 'a.jpg',onUploadProgress: function(progressEvent) {console.log(progressEvent);var percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total);console.log(percentCompleted);}});}}});
},

上传成功可以在控制台查看结果

1.4云函数操作数据库

云函数中支持对云数据库的全部功能的操作。主要讲解如何在云函数内通过传统api操作数据库,如需在云函数内使用JQL语法操作数据库,请参考:云函数内使用JQL语法

直接在云函数里面,获取到集合,就可以进行增删改查了,文档参考uni-app官网

const db = uniCloud.database();
// 获取 `unicloud-db` 集合的引用
const collection = db.collection('unicloud-db');


五 DEMO 与 源码地址

unicloud-practice: uniCloud 云函数、云数据库&云存储,实际应用探索


http://www.ppmy.cn/news/334482.html

相关文章

uni-app ①

文章目录 一、uni-app简介学习 uniapp 本质uniapp 优势uni-app 和 vue 的关系uni-app 和小程序有什么关系uniapp 与 web 代码编写区别课程内容学习重点知识点 一、uni-app 简介 uni-app 是一个使用 Vue.js 进行 开发所有前端应用的框架。开发者编写一套代码&#xff0c;即可发…

快速傅里叶变换:高效的信号处理与数据分析神器

其中一个我认为非常惊艳的算法是快速傅里叶变换&#xff08;FFT&#xff09;。它是一种数学算法&#xff0c;可以高效地计算序列的离散傅里叶变换&#xff08;DFT&#xff09;&#xff0c;这是信号处理和数据分析中的基本操作。FFT已经在许多领域引起了革命&#xff0c;包括音频…

碳排放预测模型 | Python实现基于CNN卷积神经网络的碳排放预测模型(预测未来发展趋势)

文章目录 效果一览文章概述研究内容环境准备源码设计学习总结参考资料效果一览 文章概述 碳排放预测模型 | Python实现基于CNN卷积神经网络的碳排放预测模型(预测未来发展趋势) 研究内容 这是数据集的链接:https://github.com/owid/co2-data/blob/master/owid-co2-data.csv …

Git工作流(随笔)

目录 前言 一、工作流概述 1、概念 2、分类 二、集中式工作流 1、概述 2、介绍 3、操作过程 三、功能分支工作流 1、概述 2、介绍 3、操作过程 1&#xff09;创建远程分支 2&#xff09;删除远程分支 四、GitFlow工作流 1、概述 2、介绍 3、操作过程 五、Forki…

两个字符串根据字典序进行排序

两个字符串根据字典序进行排序意味着按照字母表顺序对字符串进行排序。在 JavaScript 中&#xff0c;我们可以使用 localeCompare 方法来比较两个字符串的顺序。具体来说&#xff0c;localeCompare 方法会比较两个字符串的 Unicode 编码值&#xff0c;并返回一个数字&#xff1…

火影忍者巅峰对决服务器维修中,火影忍者巅峰对决进不去怎么办 无法登录解决方法...

火影忍者巅峰对决进不去怎么办&#xff1f;对于一款新游戏来说&#xff0c;开服自然会有一些“突发情况”等待着我们&#xff0c;比如进不去游戏、无法登录之类的&#xff0c;就比较令人纠结了&#xff0c;下面就来分享一下这款手游进不去、无法登录的解决方法。 遇到游戏进不去…

火影忍者手游决斗场服务器响应超时,火影忍者手游决斗场排行榜系统联系

《火影忍者》手游的核心玩法就是决斗场&#xff0c;在这里&#xff0c;各位勇士可以派遣手中忍者一战高下&#xff0c;在排行榜中可以看到榜上有名的PK高手&#xff0c;其实想要榜上有名很容易&#xff0c;不需要战力超群&#xff0c;比如在新服务器中&#xff0c;只需要胜利20…

火影忍者ol服务器维护中,火影忍者ol3月17日更新维护到几点

火影忍者ol官方将会在2016年3月17进行版本更新维护&#xff0c;届时将会出现大量的新道具以及玩法模式&#xff0c;还有诸多礼包等着大家去领取&#xff0c;维护时间大概持续3个小时&#xff0c;玩家无法正常登陆游戏&#xff0c;下面给大家分享火影忍者ol3月17日更新维护到几点…