unicloud api操作 增删改查
云函数有若干子概念,包括 普通云函数、云对象、公共模块、clientDB的action云函数、uniCloud扩展库。
- 云函数:通过传统json接口方式和客户端通信,客户端使用
uniCloud.callfunction("")
调用云函数 - 云对象:是通过前端导入对象来操作的,客户端使用
uniCloud.importObject("")
导入云对象。详见云对象
云函数调用
参考文档 :uniapp.dcloud.net.cn/uniCloud/cf...
js
// promise方式
uniCloud.callFunction({
name: 'test', // 云函数名称
data: { a: 1 } // 请求参数
})
.then(res => {});
// async await
const res = await uniCloud.callFunction({ name: 'test', data: { a: 1 })
// callback方式
uniCloud.callFunction({
name: 'test',
data: { a: 1 },
success(){}, // 成功
fail(){}, // 失败
complete(){} // 完成(不管成功与失败)
});
云函数实现云数据库基本增删改查
参考文档:JQL数据库操作 | uniCloud
-
获取数据库引用
jsconst db = uniCloud.database()
-
获取数据库集合引用
jsconst collection = db.collection('unicloud-test-714') // uncloud-test-714 为数据表名称
-
新增记录
jsconst res = collection.add({user:'alan'})
js'use strict'; const db = uniCloud.database() // 获取数据库引用 exports.main = async (event, context) => { // 获取集合引用 const collection = db.collection('unicloud-test-714') // 新增数据 const res = await collection.add({user:'alan'}) console.log(res) return { "code":0, "msg":"云函数调用成功" } };
-
删除记录
jsconst res = await collection.doc('60ee51103b7d3500014124c1').remove()
-
数据更新
jsconst res = await collection.doc('60ee52a1827eca0001e56bc4').update({ name:"joob" }) const res = await collection.doc('60ee52a1827eca0001e56bc4').set({ // 如果说获取不到内容,从新进行插入记录的操作 name:"joob", type:"javascript" })
update与set的区别:
当没有找到指定记录时,使用update无法进行更新操作,set在没有查找到指定记录的时候,可以进行新增内容的操作(不存在进行创建添加操作)
-
数据查找
js// 查询全部 const res = await collection.get() // 指定条件进行查询-id查询 const res = await collection.doc('id').get() // id为需要查询的指定id // 指定条件查询-其他条件进行查询 const res = await collection.where({name:"alan"}).get()
云对象实现云数据库基本增删改查
js
// 云对象名:todo
module.exports = {
add(title, content) {
// 获取集合unicloud-test-714
const collection = db.collection('unicloud-test-714')
// 新增数据
const res = await collection.add({user:'alan'})
return res;
},
//delete(){...
// update(){...
// 其他方法
}
客户端的js中
js
const todo = uniCloud.importObject('todo') //第一步导入云对象
async function addTodo () {
try {
const res = await todo.add('title demo', 'content demo') //导入云对象后就可以直接调用该对象的方法了,注意使用异步await
uni.showToast({
title: '创建成功'
})
} catch (e) {
// 符合uniCloud响应体规范 https://uniapp.dcloud.net.cn/uniCloud/cf-functions?id=resformat,自动抛出此错误
uni.showModal({
title: '创建失败',
content: e.errMsg,
showCancel: false
})
}
}
云存储操作
-
使用uni.chooseImage方法进行图片选择获取
参考地址:uniapp.dcloud.io/api/media/i...
jsuni.chooseImage({ count: 1, success(res) { console.log(JSON.stringify(res.tempFilePaths)) } })
-
使用uniCloud.uploadFile进行文件上传
参考文档:uniapp.dcloud.io/uniCloud/st...
jsuni.chooseImage({ count: 1, async success(res) { let result = await uniCloud.uploadFile({ filePath:res.tempFilePaths[0], cloudPath:'a.jpg', success(res) { console.log(res) }, fail(err) { console.log(err) } }); } })
-
使用uniCloud.deleteFile进行图片删除
参考文档:uniapp.dcloud.io/uniCloud/st...
阿里云函数删除不能在客户端进行删除操作,下列代码在云函数中进行使用
jslet result = await uniCloud.deleteFile({ fileList:['https://vkceyugu.cdn.bspapp.com/VKCEYUGU-6ce25980-c28e-4e78-bdef-a96eb40ad98b/06a1cb3a-84b7-47a0-b554-8aff299cb255.jpg'], }); console.log(result)