云函数

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概述相关推荐

  1. uniCloud云函数 云对象简单使用

    云对象简单使用 今天看了下文档 发现多了个 云对象 目前需要下载 3.4.0及以上版本 目前为 alpha版本 个人觉得云对象 让我们更加的能 贴近面向对象 https://www.dcloud.io ...

  2. 云对象 - 重新定义前后端交互

    题记 很多人都在讨论全栈.全栈就是使用一种语言js吗?不止. 语言的统一是第一步,下一步是协作的改善. 这样才能让语言统一发挥更大的价值. 背景 从2000年开始,xml作为数据交换格式开始流行,服务 ...

  3. 腾讯云对象存储 python_GitHub - fushall1104/cos-python3-sdk: 腾讯云对象存储服务(cos)Python3.5版本SDK...

    cos-python3-sdk 腾讯云对象存储服务(cos)Python3.5版本SDK *此版本非官方版本 项目进展:开发完成(分片上传待测试) 项目的来由:做基于Django个人网站时,采用了腾讯 ...

  4. java取余数的函数_左神算法基础:哈希函数和哈希表

    笔者在读研刚开始的时候,偶尔看面经,有这样一个问题:只用2GB内存在20亿个整数中找到出现次数最多的数,当时的我一脸懵逼,怎么去思考,20亿个数?What The Fuck! 但是,看完今天的文章,你 ...

  5. PCL学习(4.5)——点云对象的两种定义方式的区别与转换

    创建与访问 第一种,是一种vector的赋值方式,将point数据push_back到pcl::PointXYZ类型的模板中. pcl::PointCloud<pcl::PointXYZ> ...

  6. igs无法分配驱动器映射表_左神算法基础:哈希函数和哈希表

    笔者在读研刚开始的时候,偶尔看面经,有这样一个问题:只用2GB内存在20亿个整数中找到出现次数最多的数,当时的我一脸懵逼,怎么去思考,20亿个数?What The Fuck! 但是,看完今天的文章,你 ...

  7. 使用阿里云对象存储oos遇到跨域访问的问题

    使用阿里云对象存储oos遇到跨域访问的问题,因为第一次使用云存储,初级码渣查了好久文档,终于找到了解决方法. 大概就说了这么多,我的操作是来到oos概览一栏 ,找到跨域访问 做了一个最简单的配置,这样 ...

  8. 阿里云对象存储服务OSS前后联调

    阿里云对象存储服务OSS前后联调 1.为什么要引入阿里云对象存储服务(OSS)?有什么好处? 1.1.什么是对象存储OSS 1.2.OSS工作原理 2.阿里云对象存储-普通上传方式 2.1.时序图 2 ...

  9. 阿里云对象存储Java-SDK实战

    本文从本人博客搬运,原文格式更加美观,可以移步原文阅读:阿里云对象存储Java-SDK实战 目前项目中要保存上传的文件,很多时候都会用到对象存储.本文介绍阿里云对象存储Java-SDK在实际开发中的基 ...

最新文章

  1. POJ 3174 暴力枚举
  2. python---4
  3. 基于python tkinter的课堂点名小程序
  4. 安卓 mysql读取图片路径_android开发之数据库存取图片
  5. Window Operations
  6. 虚拟试衣软件的实现方式
  7. 留学Essay挂科后如何进行补救?
  8. CUDA +cnn安装
  9. 【给量化行情插上翅膀】天翼云电脑上实践纯Python通过LMDB加速股票行情读写速度
  10. W10电脑U盘插入电脑不显示盘符但是“安全删除硬件并弹出媒体”中却有该U盘
  11. SAR/GMTI-概述及常用抑制杂波方法DPCA
  12. linux-锁屏时间设置
  13. android 代码审核 同质化,李相国:Android同质化竞争以差异制胜
  14. 广义相加模型(GAM)与向前逐步选择算法(基于R语言)
  15. 大学计算机基础与应用第四章答案,大学计算机基础试题及答案第四章
  16. 入侵检测技术是为保证计算机系统安全,计算机数据库的入侵检测技术
  17. Workflow设计模式指的什么?
  18. matlab编程实现自适应均值滤波和自适应中值滤波
  19. PHP读取纯真IP地址数据库
  20. 计算机一级考试实训在线做,程序设计能力 在线实训系统

热门文章

  1. NGINX动态XFF黑名单配置
  2. 腾讯云SSL证书申请流程!
  3. Real-ESRGAN笔记
  4. 【adb】 win11 配置 adb环境 史上最详细
  5. mysql安装的密码设置_MySql之安装以及设置密码等
  6. 电脑:软件(win)
  7. 计算机网络【UDP和TCP首部字段详解】
  8. PDF文件如何进行格式转换?
  9. 自动驾驶的自行车——GitHub 热点速览 v.21.24
  10. matlab的conj函数