uniCloud学习简记

uniCloud学习简记

基本概念

服务空间

数据库

  • 数据库及数据表
    • 一个uniCloud服务空间,有且只有一个数据库;
    • 一个数据库可以有多个表;
    • 一个表可以有多个记录;
    • 一个记录可以有多个字段。
  • 数据表创建方式
    • 在web控制台创建
      web控制台创建表

    • 在HBuilderX中,项目根目录/uniCloud/database点右键新建DB schema,上传时创建

    • 在代码中也可以创建表,但不推荐使用,详见uniCloud官方文档

    • 操作数据库

      • 客户端直接操作数据库(clientDB):,
      • 云函数/云对象内使用JQL,链接

云函数/云对象

  • uniCloud/cloudfunctions目录右键 新建云函数/云对象
  • 每个云函数是1个目录,普通云函数的入口文件:index.js,云对象的入口文件是index.obj.js
  • 客户端和云函数的通信方式
传统的restful方式callfunction方式云对象方式clientDB方式
简述通过配置云函数URL化,把云函数转为传统的http链接云函数默认并不自带http链接把callfunction的函数式调用,升级为模块化的对象调用客户端直接操作云数据库
前端调用方式传统ajaxuni-app客户端通过uniCloud.callFunction(functionname)来调用云函数uni-app客户端通过uniCloud.importObject(objectname)导入一个云对象,直接使用这个对象的方法uni-app客户端通过<uniCloud-db>组件uniCloud.database() API来访问uniCloud数据库。也支持搭配action云函数追加服务器逻辑
适用场景http链接需要自己注册域名。如果前端是uni-app,则不推荐使用URL化。如果是非uni-app的系统需要访问云函数,只能使用URL化相比云函数URL,callfunction更加安全、更serverless,不暴露域名和ip,不怕攻击,也无需注册域名uni-app 3.4起支持。相比callfunction方式。代码更加精简、逻辑更加清晰、开发更加高效如果uni-app前端发起的服务器请求目的主要是查询或操作数据库,则推荐使用clientDB方式
  • 云对象
    • 目录结构

    • 云对象目录结构

    • 函数内部代码
      index.obj.js

// 云对象教程: https://uniapp.dcloud.net.cn/uniCloud/cloud-obj
// jsdoc语法提示教程:https://ask.dcloud.net.cn/docs/#//ask.dcloud.net.cn/article/129
module.exports = {
 // 目前有3个内置特殊方法:_before、_after、_timing 所有_开头的方法都是私有方法,客户端不可访问
 _before: function() { // 通用预处理器
     this.startTime = Date.now() // 在before内记录开始时间并在this上挂载,以供后续流程使用
 	// 当客户端调用todo云对象的add方法时,会先执行_before方法中的逻辑,
 	// 判断为add方法时校验了客户端token,校验失败则直接报错返回客户端,校验通过继续执行add方法。
 	const methodName = this.getMethodName()
 	console.log('当前调用的方法名===',methodName)
 	// if (methodName === 'add' && !this.getUniIdToken()) {
 	// 	throw new Error('token不存在')
 	// }

 },
 /**
  * method1方法描述
  * @param {string} param1 参数1描述
  * @returns {object} 返回值描述
  */
 /* 
 method1(param1) {
 	// 参数校验,如无参数则不需要
 	if (!param1) {
 		return {
 			errCode: 'PARAM_IS_NULL',
 			errMsg: '参数不能为空'
 		}
 	}
 	// 业务逻辑
 	
 	// 返回结果
 	return {
 		param1 //请根据实际需要返回值
 	}
 }
 */
 add: function(title = '', content = '') {
 	title = title.trim()
 	content = content.trim()
 	if (!title || !content) {
 		return {
 			errCode: '无效',
 			errMsg: '标题或内容不能为空'
 		}
 	}
 	if (title === 'abc') {
 		throw new Error('abc不是一个合法的todo标题')
 	}
 	//
 	return {
 		errCode: 0,
 		errMsg: '创建成功'
 	}
 	//
 },
 //
 _after(error, result) {
 	if (error) {
 		throw error // 如果方法抛出错误,也直接抛出不处理
 	}
 	result.timeCost = Date.now() - this.startTime
 	return result
 }
 //uni错误规范
 // UniError https://uniapp.dcloud.net.cn/tutorial/err-spec.html#
 // returnu代码块 触发
 // 格式
 // return {
 // 	errSubject: '',
 // 	errCode: 0,//错误码,数字类型,0:成功,其它为错误码
 // 	errMsg: ''
 // }
  
}

todo.param.js

// 本文件中的内容将在云对象【运行】时解析为运行参数
// 配置教程参考:https://uniapp.dcloud.net.cn/uniCloud/rundebug.html#run-obj-param
//运行云对象时传配置运行测试参数
add('abc1','test')

前端js中调用云对象

 		async testco() { // 注意异步
 			//导入云对象 :cco字符快速触发 uniCloud.importObject代码块
 			const helloCo = uniCloud.importObject('testco')
 			try {
 				//导入云对象后就可以直接调用该对象的sum方法了,注意使用异步await
 				const res = await helloCo.sum(1, 2)
 				console.log('调用云对象方法', res)
 			} catch (e) {
 				//TODO handle the exception
 				console.log(e)
 			}
 		},
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值