uniCloud中云函数、云对象、Schema表、openDB、JQL概述
云函数
cloudfunctions/myCloud/index.js
exports.main = async (event, context) => {const { name, age } = eventreturn `我是${name},今年${age}`
};
pages/index/index.vue
//callFunction方法 在前端和云端都可以调用另一个云函数
uniCloud.callFunction({name: "myCloud",//定义的云函数名称 上面的是myClouddata:{name:"小白",age:22}
}).then(res => {console.log(res)
})
云函数公用模块
cloudfunctions/common/wx-common/index.js
const appSecrest = '234234hj0js09dfv0j9ds09fjvfs9dfj'
const jwt = require("jsonwebtoken")
const verifyToken = (token) =>{// jsonwebtoken不是提供了jwt.verify()方法验证tokenreturn jwt.verify(token,appSecrest)
}
module.exports = {verifyToken:verifyToken
}
cloudfunctions/myCloud/index.js
'use strict';
const {verifyToken
} = require('wx-common')//引入云函数公用模块
exports.main = async (event, context) => {//event为客户端上传的参数const payload = event.token ? verifyToken(event.token) : null
}
//返回数据给客户端
return event
};
云对象
是云函数的扩展版
cloudfunctions/demoObj/index.obj.js
const db = uniCloud.database()
module.exports = {_before: function() { // 通用预处理器},async get(num) {return await db.collection("user").limit(num).get()},add: async () => {await db.collection('user').add({name:'张麻子',content:'我张麻子没有麻子'})}
}
pages/index/index.vue
const demoObj = uniCloud.importObject('demoObj') //导入云对象
let data = demoObj.get(3)
demoObj.add()
DB Schema表结构
DB Schema是基于 JSON 格式定义的数据结构的规范
{"bsonType": "object","required": ["article_id","user_id"],"permission": {"read": true,"create": "auth.uid != null","update": "doc.user_id == auth.uid","delete": "doc.user_id == auth.uid"},"properties": {"_id": {"description": "存储文档 ID(文章 ID),系统自动生成"},"article_id": {"bsonType": "string","description": "文章ID,opendb-news-posts 表中的`_id`字段","foreignKey": "pyq_article._id"},"user_id": {"bsonType": "string","description": "评论者ID,参考`uni-id-users` 表","forceDefaultValue": {"$env": "uid"},"foreignKey": "uni-id-users._id"},"ip": {"bsonType": "string","description": "评论发表时 IP 地址","forceDefaultValue": {"$env": "clientIP"}},"publish_date": {"bsonType": "timestamp","title": "点赞时间","description": "点赞时间","defaultValue": {"$env": "now"}}},"version": "0.0.1"
}
openDB
openDB是官方设计的一些表,可以直接提供给我们使用或者参考
JQL数据库操作
JQL,全称 javascript query language,是一种js方式操作数据库的规范
详细可看: http://t.csdn.cn/4BzLH
jql的诞生背景
传统的数据库查询,有sql和nosql两种查询语法。sql就不用多说了,而nosql是js方法+json方式的参数,写法形如:
const db = uniCloud.database()
let res = await db.collection('table').where({field1: 'value1'
}).get()
nosql的写法,有时也会过于复杂,如下:
const db = uniCloud.database()
const dbCmd = db.command
let res = await db.collection('table1').where({//需要表达或关系,需要用or方法field1:dbCmd.gt(0).or(dbCmd.lt(-5))
}).get()
最难的还是用nosql进行多表查询,如下:看的头皮发麻~~
const db = uniCloud.database()
const dbCmd = db.command
const $ = dbCmd.aggregate
let res = await db.collection('orders').aggregate()
.lookup({from: 'books',let: {order_book: '$book',order_quantity: '$quantity'},pipeline: $.pipeline().match(dbCmd.expr($.and([$.eq(['$title', '$$order_book']),$.gte(['$stock', '$$order_quantity'])]))).project({_id: 0,title: 1,author: 1,stock: 1}).done(),as: 'bookList',
})
.end()
而jql将解决这些问题,让js工程师没有难操作的数据库
下面展示JQL多表查询例子:
// 客户端联表查询
const db = uniCloud.database()
const order = db.collection('order').field('book_id,quantity').getTemp() // 临时表field方法内需要包含关联字段,否则无法建立关联关系
const book = db.collection('book').field('_id,title,author').getTemp() // 临时表field方法内需要包含关联字段,否则无法建立关联关系
db.collection(order, book) // 注意collection方法内需要传入所有用到的表名,用逗号分隔,主表需要放在第一位.where('book_id.title == "三国演义"') // 查询order表内书名为“三国演义”的订单.get().then(res => {console.log(res);}).catch(err => {console.error(err)})
jQ语句还提供了些云端环境变量,如下:
更多的细节可以参考官方文档: JQL数据库操作 | uni-app官网 (dcloud.net.cn)
参数名 |
说明 |
$cloudEnv_uid |
用户uid,依赖uni-id |
$cloudEnv_now |
服务器时间戳 |
$cloudEnv_clientIP |
当前客户端IP |
展示介绍到这吧,点赞过十,接着更新~~
uniCloud中云函数、云对象、Schema表、openDB、JQL概述相关推荐
- uniCloud云函数 云对象简单使用
云对象简单使用 今天看了下文档 发现多了个 云对象 目前需要下载 3.4.0及以上版本 目前为 alpha版本 个人觉得云对象 让我们更加的能 贴近面向对象 https://www.dcloud.io ...
- 云对象 - 重新定义前后端交互
题记 很多人都在讨论全栈.全栈就是使用一种语言js吗?不止. 语言的统一是第一步,下一步是协作的改善. 这样才能让语言统一发挥更大的价值. 背景 从2000年开始,xml作为数据交换格式开始流行,服务 ...
- 腾讯云对象存储 python_GitHub - fushall1104/cos-python3-sdk: 腾讯云对象存储服务(cos)Python3.5版本SDK...
cos-python3-sdk 腾讯云对象存储服务(cos)Python3.5版本SDK *此版本非官方版本 项目进展:开发完成(分片上传待测试) 项目的来由:做基于Django个人网站时,采用了腾讯 ...
- java取余数的函数_左神算法基础:哈希函数和哈希表
笔者在读研刚开始的时候,偶尔看面经,有这样一个问题:只用2GB内存在20亿个整数中找到出现次数最多的数,当时的我一脸懵逼,怎么去思考,20亿个数?What The Fuck! 但是,看完今天的文章,你 ...
- PCL学习(4.5)——点云对象的两种定义方式的区别与转换
创建与访问 第一种,是一种vector的赋值方式,将point数据push_back到pcl::PointXYZ类型的模板中. pcl::PointCloud<pcl::PointXYZ> ...
- igs无法分配驱动器映射表_左神算法基础:哈希函数和哈希表
笔者在读研刚开始的时候,偶尔看面经,有这样一个问题:只用2GB内存在20亿个整数中找到出现次数最多的数,当时的我一脸懵逼,怎么去思考,20亿个数?What The Fuck! 但是,看完今天的文章,你 ...
- 使用阿里云对象存储oos遇到跨域访问的问题
使用阿里云对象存储oos遇到跨域访问的问题,因为第一次使用云存储,初级码渣查了好久文档,终于找到了解决方法. 大概就说了这么多,我的操作是来到oos概览一栏 ,找到跨域访问 做了一个最简单的配置,这样 ...
- 阿里云对象存储服务OSS前后联调
阿里云对象存储服务OSS前后联调 1.为什么要引入阿里云对象存储服务(OSS)?有什么好处? 1.1.什么是对象存储OSS 1.2.OSS工作原理 2.阿里云对象存储-普通上传方式 2.1.时序图 2 ...
- 阿里云对象存储Java-SDK实战
本文从本人博客搬运,原文格式更加美观,可以移步原文阅读:阿里云对象存储Java-SDK实战 目前项目中要保存上传的文件,很多时候都会用到对象存储.本文介绍阿里云对象存储Java-SDK在实际开发中的基 ...
最新文章
- POJ 3174 暴力枚举
- python---4
- 基于python tkinter的课堂点名小程序
- 安卓 mysql读取图片路径_android开发之数据库存取图片
- Window Operations
- 虚拟试衣软件的实现方式
- 留学Essay挂科后如何进行补救?
- CUDA +cnn安装
- 【给量化行情插上翅膀】天翼云电脑上实践纯Python通过LMDB加速股票行情读写速度
- W10电脑U盘插入电脑不显示盘符但是“安全删除硬件并弹出媒体”中却有该U盘
- SAR/GMTI-概述及常用抑制杂波方法DPCA
- linux-锁屏时间设置
- android 代码审核 同质化,李相国:Android同质化竞争以差异制胜
- 广义相加模型(GAM)与向前逐步选择算法(基于R语言)
- 大学计算机基础与应用第四章答案,大学计算机基础试题及答案第四章
- 入侵检测技术是为保证计算机系统安全,计算机数据库的入侵检测技术
- Workflow设计模式指的什么?
- matlab编程实现自适应均值滤波和自适应中值滤波
- PHP读取纯真IP地址数据库
- 计算机一级考试实训在线做,程序设计能力
在线实训系统