uni-clould常用笔记

一,云函数

定义:

// 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:"洛杉矶湖人"
	}
)

自增的操作

const dbCmd = db.command 
let res = await db.collection('user').where({
  _id: 'my-doc-id'
}).update({
  view:dbCmd.inc(1) //@param 自增1
})

const dbCmd = db.command  
let res = await db.collection('user').where({
  _id: 'my-doc-id'
}).update({
  view:dbCmd.inc(5) //@param 自增5
})

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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值