unicloud 开发:
构成:
1, 云函数
2,云数据库: json格式的表
3,云存储和cdn
云函数 运行在云端的函数
1,这个函数是执行在严格环境下的函数(避免使用没有声明的变量)
2, 从数据库差数据需要使用await 来拿到结果
3, 参数 ( event ,context ),event 是客户端传入的参数 , context 包含了 系统调用信息和运行状态
4, 客户端调用云函数 uniCloud.callFunctions(){}
5, 记得改完 上传并部署
1, 客户端调用
uniCloud.callFunction({
name:'holy-test', // 云函数名称
success(res){
console.log(res);
},
fail(e){
console.log(e)
}
})
2, 实际云函数编写
'use strict';
exports.main = async (event, context) => {
//event为客户端上传的参数
console.log('event : ', event)
console.log('context : ', context)
//返回数据给客户端
return {
"data":{"name":'liming',"age":20},
"code":0,
"message":'hi',
}
};
**************************** 使用云函数对数据库进行增删改查
// 获得数据库 引用
const db = uniCloud.database();
// 获取 表的引用
let collection = db.collection('User')
1, 增
let res =await collection.add([
{"name":"vue"},
{"name":"js"}
])
console.log('res : ', JSON.stringify(res))
2, 删
// 查到 id ‘5f4b74af45d03400012d7c31’ 删除
let res =await collection.doc('5f4b74af45d03400012d7c31').remove();
console.log('res : ', JSON.stringify(res))
3, 更新
两种 update 和set
update 只是在原来有的 才能更新, 否则失败
set 如果原来有的数据没有字段 就设置字段, 没有这条的就新增
update
// 查到 id ‘5f4b74af45d03400012d7c31’ update
let res =await collection.doc('5f4b747845d03400012d7b4c').update({
name:'heiheihei'
});
console.log('res : ', JSON.stringify(res))
set 已有 name属性 没有type属性可以更新成功, 如果2个都已经存在了,不会更新成功 ,
// 查到 id ‘5f4b74af45d03400012d7c31’ set
let res =await collection.doc('5f4b747845d03400012d7b4c').set({
name:'hahaha',
type:'vue2'
});
console.log('res : ', JSON.stringify(res))
没有这条的就新增
// 没有 id 123456 set 会新增, 注意此时 id必须为数字
let res =await collection.doc(123456).set({
name:'test',
type:'vue-test'
});
console.log('res : ', JSON.stringify(res))
4,查
(1) doc 查id 再get
//get
let res =await collection.doc('5f4b747845d03400012d7b4c').get();
console.log('res : ', JSON.stringify(res))
(2) where 使用查询条件
//where
let res =await collection.where({'name':'xiaoming'}).get();
console.log('res : ', JSON.stringify(res))
(3) 聚合 更加精细化的搜索
********* ***********************************
如何使用
1, 创建项目时 选择 使用云服务, 需要注册账号 并且实名认证 登陆
2, 去mainfest 基础设置获取应用标识
3, 确保 登录 和应用标识都存在的情况下 , 创建云服务空间 ,填写不重复的名称
4, 链接服务空间
5, 在cloudfunctions 里创建云函数
6 , 右键 上传并运行 ,等于上传部署并且运行 ,可以发现event的打印结果
7,右键 打开webcloud 控制台,可以看到:
(1)云函数 观察用云函数
(2)云数据库 进行数据的操作, 表和字段 ,字段必须是完整的json格式 双引号
(3)云存储 进行文件操作
(4)跨域配置, 只要是h5端调用接口需要, localhost ,127.0.0.1还有dev启动自动生产的ip 做了特殊配置,本地调试无需配置
*******************************************
上传文件
上传图片
data() {
return {
imgs:null
}
},
upload(){
uni.chooseImage({
count:1 ,
success:(res)=>{
// this.uploadToCloud ( res.tempFiles[0]);
console.log(res)
uniCloud.uploadFile({
filePath : res.tempFilePaths[0],
cloudPath: res.tempFiles[0].name,
success:(imgRes)=>{
console.log(imgRes)
if(imgRes.success){
this.imgs = imgRes.fileID
this.uploadToCloud(imgRes.fileID)
}
}
})
},
fail() {
}
})
},
uploadToCloud(fileId){
uniCloud.callFunction({
name:'holy-test',
data:{ imgUrl: fileId},
success(res){
console.log(res);
},
fail(e){
console.log(e)
}
})
},
云端函数
'use strict';
// 获得数据库 引用
const db = uniCloud.database();
exports.main = async (event, context) => {
// 获取 表的引用
let collection = db.collection('user')
//set
let res =await collection.doc('5f4b689145d03400012d4d98').set({
imgUrl: event.imgUrl
});
console.log('res : ', JSON.stringify(res))
console.log(res)
//返回数据给客户端
return {
"data":res,
"code":0,
"message":'success',
}
};
删除图片
delImg(){
uniCloud.deleteFile({
fileList:[this.imgs] ,// 数组
success:(res)=>{
this.imgs = res.requestId
console.log(res)
},
fail(e) {
console.log(e)
}
})
}
****************
数据库 初始化可以使用 db_init.json 点击右键选择数据库来进行对数据库初始化操作