uni-clould常用笔记

news2025/3/11 7:04:59

一,云函数

定义:

// hellocf云函数index.js入口文件代码
'use strict';
exports.main = async (event, context) => {
	//event为客户端上传的参数
	let c = event.a + event.b
	return {
		sum: c
	} // 通过return返回结果给客户端
}

调用:

// 客户端调用云函数并传递参数
uniCloud.callFunction({
    name: 'hellocf',
    data: {a:1,b:2}
  })
  .then(res => {});

二,云对象

定义:

module.exports = {
	_before: function () { // 通用预处理器

	},
   async getAccessToken(){
	   const APPID='xxx'
	   const APPSECRET='xxx'
	   const URL = `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${APPID}&secret=${APPSECRET}`
	   const requestOptions = {
	   	method: 'GET',
	   	dataType: 'json'
	   }
	   const res = await uniCloud.httpclient.request(URL,requestOptions)
	   return res
   }
}

调用

			async getWeixinCode() { // 注意异步
				const _this=this
				const user = uniCloud.importObject('user') // 导入云对象
				try {
					const res = await user.getAccessToken() //导入云对象后就可以直接调用该对象的sum方法了,注意使用异步await
					console.log("调用接口返回",res.data.access_token)
				} catch (e) {
					console.log(e)
				}
			},

两者的区别:

云对象其实是云函数的封装简化。

三,公共模块

这个公共模块其实就是公用库,可以是自己写的公用模块,也可以是第三方sdk库。安装使用npm。

1,在cloudfunctions目录下创建common目录
2,在common目录右键创建公用模块目录(本例中为hello-common),会自动创建入口index.js文件和package.json,不要修改此package.json的name字段
3,在hello-common右键上传公用模块
4,在要引入公用模块的云函数目录(本例中为use-common)执行npm init -y生成package.json文件
5,在use-common目录执行npm install ../common/hello-common引入hello-common模块

编写:

// common/hello-common/index.js
function getVersion() {
  return '0.0.1'
}
module.exports = {
  getVersion,
  secret: 'your secret'
}

在云对象中引入调用:

const {
  secret,
  getVersion
} = require('hello-common')
module.exports = {
	_before: function () { // 通用预处理器

	},
   async getAccessToken(){
	   console.log('res', res)
	   let version=getVersion()
	   // 此处省略a和b的有效性校验
	   return {
		   secret,
			version
	   }
   }
}

四,云数据库基本操作

1,初始化介绍

在web控制台新建一个数据表,一个数据表有三种查看模式:数据、索引、表结构。

【数据】:就是这个表中有的值
【索引】:分为唯一型索引和非唯一型索引,在通过该字段查询(where)或排序(orderBy)时可以获得更快的查询速度。
【表结构】:定义表的结构,每个字段的键的名字和值的类型

2,新建数据库操作

第一种是在web控制台进行新建。这种很简单,不再赘述。主要讲第二种,通过代码新建数据库。

const db = uniCloud.database();
db.createCollection("mytestTable")

在云对象中执行之后,就可以在web控制台看到对应生成的数据库了。

3,获取集合的引用

const db = uniCloud.database();
const collection = db.collection('mytestTable');

这样一来,collection就是这个集合的引用,后续要对表做什么,就使用这个collection。

4,增操作

await collection.add({username:"dmhsq",test:'测试'})

5,计数操作

let res = await collection.count()

6,查操作

await collection.get()

这三个,是获取到整个表的引用进行操作的。而更多的时候,我们是会有选择性地筛选出某几个记录来操作。这就要从整个表进行筛选。如果不筛选,那就是整个表。

7,筛选

collection.where({
	username: "匹配的值"
})

不仅如此,筛选还可以依据指令进行。这些指令存储在db.command对象中。
请添加图片描述

const dbCmd = db.command
let res = await collection.where({
	username:dbCmd.eq("匹配的值")
}).get()

它返回的依旧是记录的集合。

await collection.where({age:'20'}).get()

5,删操作

await collection.doc('af44222c639017f2002eebc13996ac1d').remove()

这样子明显就是指定id来删除记录,也可以结合数据库的选择语句来找到目标记录加以删除。

await collection.where({age:"20"}).remove()

6,改操作

// 更新数据 update或者set  set如果没找到id 则会新增一条数据
await collection.doc('eee691ac63901abc010f67d77f271fec').update(
	{
		username:"科比",
		age:"20",
		No:"24",
		test:"洛杉矶湖人"
	}
)

当然,也可以利用选择语句加以更新。

  await collection.where({username:"dmhsq"}).update(
	{
		username:"科比",
		age:"20",
		No:"24",
		test:"洛杉矶湖人"
	}
)

7,数据分页的实现

let pages = event.p; //页数
let nums = event.n; //每页个数
let res = await collection.skip((pages-1)*nums).limit(nums).get()
console.log("当前页数为"+pages)

8,排序的实现

collection.orderBy("字段名","升序/降序").get()
升序为asc
降序desc

9,指定要返回的参数

let res = await collection.field({"_id":true}).get()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/74322.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】su 和 sudo 命令

su 命令 su 命令作用:在已登录的会话中切换到另外一个用户。 1、su root 切换超级用户root角色,但不切换用户环境。需要输入root角色的密码。 2、su - root 切换root角色,并切换用户环境。 sudo 命令 sudo 命令作用:暂时切…

【树莓派不吃灰】命令篇⑩ 记录Linux常用命令

目录1. 命令格式1.1 mount2. 文件处理命令2.1 ls2.2 mkdir2.3 cd2.4 pwd2.5 rmdir2.6 cp2.7 mv2.8 rm2.9 touch2.10 cat、tac2.11 more、less、head、tail2.12 ln3. 权限管理命令3.1 chmod3.2 chown3.3 chgrp3.4 umask4. 文件搜索命令4.1 find4.2 locate4.3 which4.4 whereis4.…

进阶 - Git的标签管理

本篇文章,是基于我自用Windows(Win10)系统当做示例演示 本地仓库在:E:\test_git_rep 远程仓库是:gitgithub.com:lili40342/test_git_rep.git 描述测试环境的目的,是更好的解释测试过程,以免对你…

elasticsearch-8.5.2快速入门和kibana-8.5.2的使用

一、 安装 官方安装Elasticsearch,和ES可视化工具kibana。安装下载过程略。 二、 启动Elasticsearch。 windows系统,直接进入到如图目录,然后启动elasticsearch.bat,这个就是ES服务。 启动后,我们可以访问https://…

#438 沸腾客厅:从数字藏品到Web3.0,不止于事件营销

点击文末“阅读原文”即可收听本期节目数字藏品是什么?数字藏品是指使用区块链技术,对应特定的作品、艺术品生成的唯一数字凭证,在保护其数字版权的基础上,实现真实可信的数字化发行、购买、收藏和使用。2022年是天津文化中心成立…

「Redis」10 三大缓存问题、分布式锁

笔记整理自【尚硅谷】Redis 6 入门到精通 超详细 教程 Redis——三大缓存问题、分布式锁 1. 三大缓存 缓存穿透 问题描述 key 对应的数据在数据源并不存在,每次针对此 key 的请求从缓存获取不到,请求都会压到数据源,从而可能压垮数据源。 …

Java入门教程(27)——重写和final关键字

文章目录1.重写(override)2.final关键字实例1:修饰变量实例2.修饰方法实例3.修饰类1.重写(override) 什么是重写呢,顾名思义,子类重写父类的方法,可以用自身行为替换父类行为。方法重写需要符合的条件: 方法名、形参列…

【Linux】静动态库的制作和使用

前言 好久不见,甚是想念~ 本篇文章具体以操作为主,介绍在Linux下如何打包动静态库,并且如何使用这些库,同时,简单的阐述一下原理。让我们开始吧~ 上一篇Linux文章传送地址~ 【Linux】基础IO的理解与操作 - fd_柒海啦的…

复合材料专场 | ABAQUS车载四型复合材料气瓶固化过程的数值模拟分析攻略

复合材料气瓶固化的热场本质上可以认为包含两个阶段,复合材料气瓶表面和周围通过与空气的热对流换热,复合材料与内部塑料芯模以及金属接头的传热。在第一个阶段整体温度较低,热量从表面向复合材料层内部流入,此时固化速率很低&…

Python使用Opencv图像处理方法完成手势识别(三)tkinter制作GUI界面

前面对手势识别已经差不多完成。 这一章来制作一个手势识别GUI界面和说一下精确度不够问题所在。 首先是精确度不够的问题: 让手势更规范,手掌张开点。首先应该调节Hsv阈值,因为手掌和环境颜色与我的可能有差异。调整面积,周长阈…

ADI Blackfin DSP处理器-BF533的开发详解7:SPI接口的驱动和应用(含源代码)

硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 接口功能介绍 SPI 接口是 4 线串口,可以连接 SPIFLASH,SPI 接口的 AD,DA 等等。ADSP-BF533 的 SPI 接口支持主…

【Python合集系列】爬虫有什么用,网友纷纷给出自己的答案,王老师,我..我想学那个..爬虫。可以嘛?“(代码免费分享)

导语 Hello,大家好呀!我是木木子吖~ 一个集美貌幽默风趣善良可爱并努力码代码的程序媛一枚。 听说关注我的人会一夜暴富发大财哦~ (哇哇哇 这真的爱😍😍) 生活中总有些东西值得爬一爬 爬虫…

Java 内存模型之 JMM

—— 计算机存储结构 计算机存储结构,从本地磁盘到主存到 CPU 缓存,也就是硬盘到内存,到CPU,一般对应的程序的操作就是从数据库到内存然后到CPU进行计算CPU拥有多级缓存,(CPU和物理主内存的速度不一致&…

群集搭建【LNMP+负载均衡+高可用+跳板机】

目录 项目需求 LNMP部署 web1部署 mysql部署 php部署 nfs部署 LNMP测试 负载均衡与高可用 web2部署 lb1部署 lb2部署 验证群集 跳板机功能 测试跳板机 项目需求 实验目标:根据拓扑图搭建环境,安装论坛,创建证书通过https访问,实现…

一文搞懂 Nginx

文章目录一、前言二、NGINX 指令与上下文2.1 指令2.2 上下文三、NGINX 静态文件处理3.1 静态文件配置3.2 静态文件类型处理四、NGINX 动态路由4.1 Location 匹配4.1.1 前缀匹配4.1.2 精准匹配4.1.3 正则匹配4.1.4 优先前缀匹配4.2 Location 匹配优先级4.2.1 匹配优先级对比4.2.…

学好selenium工具,能实现你想得到的所有事情

文章目录一、介绍背景二、开发与实现2.1、部署开发环境2.2、开始码代码<demo只为提供思路>2.3、思路分析2.4、难点解析三、总结一、介绍背景 情况是这样的&#xff1a;某段时间之前&#xff0c;开发想找我用ui自动化帮他们实现一个功能&#xff1a;在系统某些时候生成报告…

[附源码]计算机毕业设计大学生心理健康测评系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

零基础CSS入门教程(17)——内边距

本章目录1.任务目标2.默认情况3.有内边距4.小结1.任务目标 上一篇介绍了外边距&#xff0c;也就是元素跟相邻元素的距离。 本篇来介绍内边距&#xff0c;顾名思义&#xff0c;内边距是指的元素内部的内容&#xff0c;与元素的边的距离 2.默认情况 <!DOCTYPE html> <…

Velero 系列文章(一):基础

概述 Velero 是一个开源工具&#xff0c;可以安全地备份和还原&#xff0c;执行灾难恢复以及迁移 Kubernetes 集群资源和持久卷。 灾难恢复 Velero 可以在基础架构丢失&#xff0c;数据损坏和/或服务中断的情况下&#xff0c;减少恢复时间。 数据迁移 Velero 通过轻松地将 …

使用VictoriaMetrics 对Prometheus的数据进行分布式存储

前言 Prometheus 就是一个很好的时序数据库&#xff0c;对于监控数据量没有超过千万级的 情况下没必要进行分布式存储。一般的监控数据存3个月以内即可&#xff0c;所以数据量并不会很大。 并且生产环境可以搞多个Proms数据源在Grafana中做统一的告警。并且在时序数据库的排名…