首页 > 其他分享 >9.24学习

9.24学习

时间:2024-09-24 21:23:59浏览次数:1  
标签:name err 9.24 数据库 db 学习 uniCloud uni

转载,非原创,写在这记录用的

聊一聊我最近使用的uniCloud是个什么玩意?-腾讯云开发者社区-腾讯云 (tencent.com)

什么是uniCloud

uniCloud 是 DCloud 联合阿里云、腾讯云,为开发者提供的基于 serverless 模式和 js 编程的云开发平台。

到底是怎么一回事?听我给你简单说一下

对架构演进有了解的同学都知道,很早之前一般是单体架构,前后端代码写在一起,一般一个人单甩一个项目。后来随着技术的演进,工种演化为前端开发人员和后端开发人员,前后端分离架构应运而生。

近几年,随着云计算的流行,国外有人就提出了Serverless思想。既然后端这么重,那我直接不要你了,我js编程直接搞定。前端收集到的数据不用往后端传,直接js操作入库,前端要展示数据,直接js查询数据库获取数据。听起来都很牛逼!

uniCloud就是这样的一个平台,如何实现我们上面所说的操作,就需要谈一谈uniCloud的基本概念。

uniCloud的基本概念

服务空间

一个服务空间对应一整套独立的云开发资源,包括数据库、存储空间、云函数等资源。服务空间之间彼此隔离。

每个服务空间都有一个全局唯一的space ID,至于在云服务器怎么隔离的,我们就不需要关注了

目前阿里云和腾讯云都是免费开通,腾讯云有些功能已经收费,不用多想,未来一定收费。

云数据

uniCloud同时支持阿里云和腾讯云,它们的数据库大体相同,有细微差异。阿里云的数据库是mongoDB4.0,腾讯云则使用自研的文档型数据库(兼容mongoDB 4.0版本)。uniCloud基本抹平了不同云厂商的差异,有差异的部分会在文档中单独标注。所以熟悉mongoDB的同学就很容易上手了!

那么如何操作数据库?

  • 云函数操作数据库是较为传统的开发方式,使用nodejs写云函数、使用传统的MongoDB的API操作云数据库。
  • 客户端访问云数据库,称为clientDB。这种开发方式可大幅提升开发效率,避免开发者开发服务器代码,并且支持更易用的jql语法操作数据库,是更为推荐的开发方式。clientDB有单独一套权限和字段值控制系统,无需单独数据库安全。其实就是把MongoDB的API封装了一层,待会给大家演示

云函数

云函数是运行在云端的 JavaScript 代码,和普通的Node.js开发一样,熟悉Node.js的开发者可以直接上手。

就是这一部分直接代替了后端,让不熟悉后端的前端人员直接可以上手,降低了学习了成本。那后端人员干嘛去?如果真有那么一天,可能会去搞云计算开发吧,只是对业务的关注度会降低吧!

uniCloud的开发模式

通过上面的介绍,我们大致了解了什么是uniCloud,接下来我们通过一些代码片段来直观的看一看在前端如何直接和数据库交互。

代码语言:javascript 复制
//首先我们要获取db对象,用它来操作云数据库
const db = uniCloud.database();

新增数据

代码语言:javascript 复制
//数据对象
formData: {
    "colony_house_name": "",
        "colony_house_area": "",
            "describe": ""
}

db.collection('table_name').add(formdata).then((res) => {
    uni.showToast({
        icon: 'none',
        title: '新增成功'
    })
    // 处理数据
    
}).catch((err) => {
    uni.showModal({
        content: err.message || '请求服务失败',
        showCancel: false
    })
}).finally(() => {
    uni.hideLoading()
})

修改数据

代码语言:javascript 复制
    db.collection(dbCollectionName).doc("5f79fdb337d16d0001899566").update(formdata).then((res) => {
     uni.showToast({
      icon: 'none',
      title: '修改成功'
     })
     // 处理数据
   
    }).catch((err) => {
     uni.showModal({
      content: err.message || '请求服务失败',
      showCancel: false
     })
    }).finally(() => {
     uni.hideLoading()
    })

删除数据

代码语言:javascript 复制
const db = uniCloud.database();
db.collection("table1").doc("5f79fdb337d16d0001899566").remove()

查询数据

单表查询
代码语言:javascript 复制
  db.collection('list')
    .where('name == "hello-uni-app"')
    .get()
    .then((res)=>{
      // res 为数据库查询结果
    }).catch((err)=>{
      // err.message 错误信息
      // err.code 错误码
    })
联表查询

table_name_a是主表,table_name_b是副表,关联查询时候,需要将主表放到第一位。需要在主表的主键字段增加映射关系,就是下面的foreignKey,表示这个字段映射到table_name_b表的_id字段

代码语言:javascript 复制
"plant_breed_classify_code": {
   "bsonType": "string",
   "description": "养殖类型编码",
   "trim": "both",
   "foreignKey": "table_name_b._id" // 使用foreignKey表示,此字段关联s-plant-breed-classify表的_id。
  },
代码语言:javascript 复制
   db.collection('table_name_a,table_name_b')
    .where({
     create_by:userId
    })
    .field('plant_breed_classify_code{classify_name}')
    .groupBy('plant_breed_classify_code')
    .groupField('count(*) as total')
    .get()
    .then((res) => {
        const data = res.result.data;
        if (data) {
            //处理数据
        }
    }).catch((err) => {
        uni.showModal({
            content: err.message || '请求服务失败',
            showCancel: false
        })
    }).finally(() => {
        uni.hideLoading()
    })

uniCloud的优缺点

结合我最近使用的情况,来谈谈我认为的uniCloud的优缺点

优点

  • 简化了传统开发模式,提高了轻应用的开发效率
  • 一定程度上降低了企业的人工成本,后端可以少招人....
  • 降低了前端人员学习压力,实现某一部分的全栈梦
  • 由于目前serverless处于免费阶段,可以为企业剩下服务器和运维方面的成本

缺点

  • 官方文档太乱,案例太少,不利于快速上手
  • 多表关联查询场景下不理想,尤其你正在开发一个统计页面
  • 云数据目前不支持删除数据,需要api调用才可以
  • 假如你习惯了关系型数据库,习惯了navicat,你会发现在这里搞数据会非常别扭
  • 没有类似MySQL的分析器,不太容易发现你的查询语句哪里出错

总结

通过最近使用uniCloud的情况来说,如果你是一个前端人员,还是挺爽的。相对于以往的小程序需要接入后台项目,后台项目又需要和微信服务器交互模式来说,uniCloud算是一次质的飞跃。免费代表着还在推广阶段,所以很多功能需要完善,当然天下没有免费的午餐,收费时代早晚会到来,别被套牢就行。

标签:name,err,9.24,数据库,db,学习,uniCloud,uni
From: https://www.cnblogs.com/po3a/p/18430059

相关文章

  • 2024.9.24-课后试验问题整理
    1、java中字符和字符串用equals()方法进行判断是否相等。""比较的是地址publicclassEnumTest{publicstaticvoidmain(String[]args){Sizes=Size.SMALL;Sizet=Size.LARGE;//s和t引用对象是否为同一个?System.out.println(st);//是原始数据吗?System.out.println(s.get......
  • 2024.9.24- java开学测
    1、定义student类,其中包括五个私有变量(stunumber,name,age,sex,score)。各成员的含义如下:变量stunumber为字符串类型String,用于存储学生的学号(有8位数字组成)。变量name为字符串类型String,用于存储学生的姓名。变量age为int类型,用于存储学生的年龄。变量sex为boolean类型,用于存储学......
  • Rust的初级学者课程和学习资源推荐
    目录一、Rust简介二、安装Rust三、基础语法四、所有权和借用五、结构体和枚举六、模块和包管理七、错误处理八、总结和进一步学习一、Rust简介什么是Rust?强调安全性、性能和并发性的系统编程语言。适用于从底层系统编程到Web开发等各种领域。Rust的特点......
  • Git学习
    前言会用docker了,结果啥都要自己下载(gdb,pwndbg,git...),真是麻烦到家了。现在顺便学一下git吧。廖雪峰的教材命令仓库初始化gitinit添加gitaddxxxgitcommitxxx重置gitreset--hardHEAD^/HEAD~100/commit_idgit查看查看idgitrefloggitloggitstatus查看修改gi......
  • 2024.9.24 思维导图与PDF
    哈哈哈终于有我也用过的东西啦~Xmind一款打工人用了都说好的软件(#.#)【知识小课堂1】不同款式的思维导图:【知识小课堂2】PDF转换器!1、PDF(便携式文档格式),这种文件格式与操作系统平台无关——PDF文件不管是在Windows还是别的操作系统中都是通用的。2、这一特点使它成为在I......
  • 吴恩达机器学习课程 笔记4 分类 逻辑回归
    逻辑回归机器学习中的逻辑回归(LogisticRegression)是一种广泛使用的分类算法,尽管它的名字中包含“回归”这个词,但实际上它主要用于解决分类问题,特别是二分类问题。逻辑回归模型可以用来预测某一类事件发生的概率,例如预测用户是否会点击广告、病人是否患有某种疾病等。逻辑回归的......
  • Java学习笔记(上)——动力节点老杜(某站2000万播放)
    此文章是本人大一学习java时记的笔记,原视频在https://www.bilibili.com/video/BV1Rx411876f,配套服用更佳!一.JAVA开发环境的搭建1.常用的Dos命令1.1win+r打开Dos命令窗口1.2什么是Dos命令在最初的计算机中没有图形界面,也就是说通过Dos命令窗口可以完全完成文件的新建、......
  • MarkDown学习
    MarkDown学习标题一级标题:“#”+空格二级标题:“##“+空格三级标题:”###“+空格字体粗体:两边加“**”Hello,World!斜体:两边加“*”Hello,World!粗斜体:两边加三个“*”Hello,World!删除效果:两边加“~~”Hello,World!引用右箭头“>”+回车《JavaSe......
  • 2024.9.24
    下周这时候我就回家了啊。国庆后大概就得寒假再回去了,要连着在宿舍呆三个月。有点害怕国庆结束后万一撑不下去怎么办,不过应该不会那么脆弱吧。高代课感觉啥都没讲,就是很重要但太基础的东西嘛。我其实不太懂这些交换律结合律啊之类的东西,是直接背下来每个结构有啥样的性质,还是......
  • 【Python学习笔记】字符串
    目录1.定义字符串2.基本操作2.1索引:2.2访问单个字符:2.3访问范围内字符:2.4单个字符编码3.转义符4.运算符5.格式化6.常用字符串函数6.1查找类函数6.2分割类函数6.3字符串连接方法6.4大小写字符转换方法6.5替换方法6.6删除字符串两端、右端或左端连续空白字符......