文章目录
什么是unicloud
uniCloud 是 DCloud 联合阿里云、腾讯云,为开发者提供的基于 serverless 模式和 js 编程的实现后端服务的云开发平台。不需要服务器的购买配置即可快速创建一个完整的后端服务。
unicloud优点
用JavaScript开发前后台整体业务
非h5项目免域名使用服务器
不需要前后端分离开发
创建unicloud
-
创建方式一:已有项目,项目右键 > 创建unicloud云开发环境 >选择阿里云
-
创建方式二:创建项目时勾选
-
项目右键点击关联云服务
没有创建云服务项目需要点击 新建
新建之后点击关联成功后 旁边就会显示如下:【阿里云: xxx服务空间名】 而不是显示未关联
创建云函数
cloudfunctions右键 > 新建云函数 > 函数名test-1(名字自定义 我这里是test-1)
函数名test-1,生成云函数模板index.js 并上传部署到 云函数/云对象列表
修改index.js 文件之后记得右键点击上传部署
云函数调用
云函数:
// test-1 index.js
'use strict';
exports.main = async (event, context) => {
//event为客户端上传的参数
const { username, age } = event
console.log('event : ', event)
//返回数据给客户端
return {
msg: `请求成功, 传递的用户名:${username}`,
code: 0
}
};
- callback方式调用
// index.vue
getData() {
uniCloud.callFunction({
name: 'test-1',
data: {
username: 'kuku',
age: 20
},
success(res) { // 成功
console.log(res, '返回的结果')
},
fail() {
// 失败
},
complete(){ // 完成 不管成功还是失败 }
})
}
}
- promise方式调用
// index.vue
async getProData() {
const res = await uniCloud.callFunction({
name: 'test-1',
data: {
username: 'kuku',
age: 29
}
})
console.log(res)
}
创建云数据库
- 手动创建数据表
- 配置db_init.json 创建多个表
在json里面以键值对的形式创建:(会生成userlist、pagelist 两个表, 右键点击初始化云数据库即可)
{
"userlist": { },
"pagelist": { }
}
云函数实现云数据库增删改查
1. 获取数据库引用
const db = uniCloud.database()
2. 获取数据库集合引用
没有手动添加user表的话会自动添加
const collection = db.collection('user')
3. 添加数据操作
const res = await collection.add({ name, age })
'use strict';
//获取数据库引用
const db = uniCloud.database();
exports.main = async (event, context) => {
//event为客户端上传的参数
console.log('event : ', event)
// 获取某一个数据库的集合
const collection = db.collection('user')
// 获取前端传递的参数
const { name, age } = event;
// 添加数据操作
const res = await collection.add({ name, age })
//返回数据给客户端
return {
code: 0,
msg: res
}
};
4. 得到user数据列表
'use strict';
const db = uniCloud.database()
console.log(db, 'db')
exports.main = async (event, context) => {
const collection = db.collection('user')
console.log(collection, 'collection')
const res = await collection.get()
//返回数据给客户端
return {
code: 0,
list: res.data
}
};
async onLoad() {
const res = await uniCloud.callFunction({
name: 'get_user'
})
this.userlist = res.result.list
},
5. 删除数据
const res = await collection.doc(‘60ee51103b7d3500014124c1’).remove()
'use strict';
const db = uniCloud.database()
exports.main = async (event, context) => {
const { id } = event
const collection = db.collection('user')
const res = await collection.doc(id).remove()
//返回数据给客户端
return {
code: 0,
msg: res
}
};
async del(id) {
const res = await uniCloud.callFunction({
name: 'del_user',
data: { id }
})
console.log(res, '删除成功')
}
6. 更新数据
const res = await collection.doc(‘60ee52a1827eca0001e56bc4’).update({
name:“要修改的数据”
})
const res = await collection.doc(‘60ee52a1827eca0001e56bc4’).set({ // 如果获取不到内容,从新进行插入记录的操作
name:“要修改的数据”,
})
'use strict';
const db = uniCloud.database()
exports.main = async (event, context) => {
//event为客户端上传的参数
console.log('event : ', event)
const collenction = db.collection('user')
const { id, name } = event
const res = await collenction.doc(id).update({name: name})
//返回数据给客户端
return event
};
async update(id, name) {
//修改数据
const res = await uniCloud.callFunction({
name: 'update_user',
data: { id, name }
})
//刷新修改之后的数据
const reflsh = await uniCloud.callFunction({
name: 'get_user'
})
this.userlist = reflsh.result.list
}