uniClound-云函数的基本使用用法

目录

概述:

注意事项

创建项目

创建云服务空间

关联云服务空间

创建云函数

使用云函数


云函数是运行在云端的 JavaScript 代码,是基于 Node.js 的扩展。

概述:

云函数即在云端(服务器端)运行的函数,开发者无须购买、搭建服务器,只需编写函数代码并部署到云端即可在客户端(App、H5、小程序等)调用,同时云函数之间也可以相互调用。

一个云函数的写法与一个在本地定义的JavaScript方法无异,当云函数被客户端调用时,定义的代码会被放在Node.js运行环境中执行。

开发者可以和在Node.js环境中使用JavaScript一样在云函数中进行网络请求等操作,而且还可以通过云函数服务端SDK搭配使用多种服务,如使用云函数SDK中提供的数据库和存储API操作数据库和存储。

每个云函数是一个目录,其中普通云函数有index.js入口文件,云对象的入口文件则是index.obj.js

一个最简单的云函数只需要这个入口js文件,在里面编写代码即可。当然也可以在这个js中require该云函数目录下的其他js、json文件。

云函数的配置文件和 npm规范 相同,在云函数目录下可新建一个 package.json 来存放配置。uniCloud云函数扩展了 package.json,增加了一些特有的配置项。详见

云函数启动后实例会保留一段时间(如15分钟),超过保留期后若该云函数一直没有被再调用,那这个实例会被释放。所以云函数有冷启动的概念。不过由于js实例的启动要比php和java更快,所以js更适合serverless方式。

注意事项

  • 云函数内使用commonjs规范,不可使用import、export,参考:commonjs模块
  • 不同项目使用同一个服务空间时,不可使用同名云函数。同名云函数会相互覆盖。
  • 在HBuilderX创建云函数时,如果新云函数与服务器上已存在同名云函数,会用新函数覆盖。所以应先选择从服务空间下载云函数。
  • 单个云函数大小限制为10M(包含node_modules),过大的云函数影响运行性能,也会增加计费的gbs。同时支付宝云与腾讯云支持在云端安装node_modules,此时不占用云函数体积。
  • uniCloud的阿里云版与支付宝云版,暂不可使用相对路径读取文件(比如fs.readFileSync('./info.txt')),可以使用绝对路径fs.readFileSync(path.resolve(__dirname,'./info.txt'))

具体介绍参考官网

uniapp官网地址

创建项目

创建一个带ui库的项目,选择vue2,并选择启用uniClound选择阿里云(有免费)

创建云服务空间

右键选择关联云服务空间去新建一个云函数

跳转到浏览器后选择新建一个云服务空间,选择购买一个免费的,有需求的小伙伴可以自行选择合适的

关联云服务空间

回到项目,再次右键uniClound选择关联云服务空间初始化引导,根据引导做就好了,项目选择需要云函数的项目,出现在项目里即关联成功,至此,uniClound的环境配置完成,可以开始使用了。

创建云函数

右键选择uniClound下属文件夹cloudfunctions创建云函数,写好名字默认模板新建就好

使用云函数

例子如下

文档结构部分

登录的云函数

代码运行部分

uniClound链接数据库,collection链接数据库表

'use strict';
exports.main = async (event, context) => {
	//event为客户端上传的参数
	console.log('event : ', event)
	// de  登录接口
	// 1 连接数据库
	var db = uniCloud.database();
	// 2 接收前端传入的用户数据,与数据库表里的用户数据作对比
	// event.和前端的名字相对应   
	// 变量名和数据库表名一致
	var name=event.name;
	var username = event.username;
	var password = event.password;
	// 条件查询 全部查询 await db.collection('表名').get()
	var result = await db.collection('user').where({
		username: username
	}).get()
	console.log(result)
	// 判断是否存在
	if (result.affectedDocs == 0) {
		return {
			code: 500,
			msg: "用户不存在"
		}
	} else {
		// 校验密码是否正确
		// 因为返回的是个数组所以用data[0]
		if (password == result.data[0].password) {
			return {
				code: 200,
				msg: "登录成功",
				//  拿到登录数据
				user: result.data[0]
			}
		} else {
			// 信息一致则返回登录成功,信息不对则返回
			return {
				code: 500,
				msg: "密码错误"
			}
		}
	}
	//返回数据给客户端
	return result
};

页面调用部分

//在methods中写方法
login() {
				uniCloud.callFunction({
					// 云函数名字
					name: "btn-login",
                    //函数传参
					data: {
						username: this.username,
						password: this.password
					},
					// 用箭头函数
					// success 回调函数
					success: (res) => {
						console.log(res);
						if (res.result.code == 200) {
							uni.showToast({
								titlt: "登录成功"
							})
							// setTimeout 定时器
							// switchTab  跳转到 tabBar页面
							// navigateTo 跳转到 普通页面
							setTimeout(() => {
								uni.switchTab({
									url: "/pages/index/index"
								})
								// 把用户信息本地储存
								// uni.setStorageSync("name", res.result.user.name)
								uni.setStorage({
									key:'name',
									data:res.result.user,
									success:function(){
										console.log('success');
									}
								})
							}, 20)
						} else {
							// showToast 显示消息提示框
							uni.showToast({
								titlt: res.result.msg,
								icon: "none"
							})
						}
					},

				})
			},

用法演示完毕

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gnodnuy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值