文章目录
前言
本文介绍uniCloud创建云函数以及云对象的方法,以及数据的增删改查,云函数的调用,传值等,云储存上传资源
提示:以下是本篇文章正文内容,下面案例可供参考
获取集合的引用
云函数
const db = uniCloud.database();
// 获取 `user` 集合的引用
exports.main = async (event, context) => {
const collection = db.collection('user');
}
使用
uniCloud.callFunction({
name:"users"//云函数名
})
云对象
const db = uniCloud.database();
module.exports = {
_before: function () {
// 通用预处理器
},
get(){
db.collection('users').get()
}
}
使用
//引入
const cloudObj=uniCloud.importObject();
cloudObj.get()
集合 Collection
通过 db.collection(name) 可以获取指定集合的引用,在集合上可以进行以下操作
类型 | 接口 | 说明 |
---|---|---|
写 | add | 新增记录(触发请求) |
计数 | count | 获取符合条件的记录条数 |
读 | get | 获取集合中的记录,如果有使用 where 语句定义查询条件,则会返回匹配结果集 (触发请求) |
引用 | doc | 获取对该集合中指定 id 的记录的引用 |
查询条件 | where | 通过指定条件筛选出匹配的记录,可搭配查询指令(eq, gt, in, …)使用 |
skip | 跳过指定数量的文档,常用于分页,传入 offset | |
orderBy | 排序方式 | |
limit | 返回的结果集(文档数量)的限制,有默认值和上限值 | |
field | 指定需要返回的字段 |
查询筛选指令
类型 | 接口 | 说明 |
---|---|---|
比较运算 | eq | 字段等于 == |
neq | 字段不等于 != | |
gt | 字段大于 > | |
gte | 字段大于等于 >= | |
lt | 字段小于 < | |
lte | 字段小于等于 <= | |
in | 字段值在数组里 | |
nin | 字段值不在数组里 | |
逻辑运算 | and | 表示需同时满足指定的所有条件 |
or | 表示需同时满足指定条件中的至少一个 |
.conllection 云函数
const db = uniCoud.database()
exports.main = =async (event,context)=>{
let {
num} = =event;//callFunction传递的data数据
return await db.conllection('users').get()
}
add 新增
// 单条插入数据
let res = await collection('users').add()//对象
// 批量插入数据
let res = await collection('users').add([])//数组
查询 where
- limit(1)返回一条
- skip(4) 跳过指定位置
- orderBy(field, asc) 排序 //field字段 //asc升序/dasc降序
- field() 查询返回指定的字段
let res = await db.collection('goods').limit(1).where({
//返回一条数据
category: 'computer',//符合此条件的表
name: new RegExp('^ABC')//正则匹配
}).get()
skip(4) 跳过指定位置
let res = await collection('users').skip(4).get()
orderBy(field, asc) 排序 //field字段 //asc升序/dasc降序
let res = await collection.orderBy("name", "asc").get()
field() 查询返回指定的字段
collection.field({
'age': true }) //只返回age字段、_id字段,其他字段不返回
删除 remove()
collection.doc(_id).remove()
// 清理全部数据
let res = await collection('users').doc().remove();
//删除指定文档
let res = await collection('users').doc(document.id).remove();
更新 updata
使用腾讯云时更新方法必须搭配doc、where方法使用,db.collection(‘test’).update()会报如下错误:param should have required property ‘query’
未使用set、remove更新操作符的情况下,此方法不会删除字段,仅将更新数据和已有数据合并。
更新对象
//根据doc-id更新这条数据,注意doc-id不可出现在update对象里否者不生效
let res = await collection.doc('doc-id').update({
name: "Hey",
count: {
fav: 1
}
});
更新数组
//直接数组下标传值
let res = await collection.doc('doc-id').update({
arr: {
1: "uniCloud"
}
})
更新文档,如果不存在则创建
collection.doc().set()
此方法会覆写已有字段,需注意与update表现不同,比如以下示例执行set之后follow字段会被删除
let res = await collection.doc('doc-id').set({
name: "Hey",
count: {
fav: 1
}
})
批量更新文档
const dbCmd = db.command
let res = await collection.where({
name: dbCmd.eq('hey')}).update({
age: 18,
})
更新数组内指定下标的元素
const res = await db.collection('query').doc('1').update({
// 更新students[1]
['students.' + 1]: {
name: 'wang'
}
})
查询指令
const dbCmd = db.command
const myOpenID = "xxx"
let res = await db.collection('articles').where({
quarter: dbCmd.eq('2020 Q2')
}).get()
uniCloud.callFunction()
调用云函数
uniCloud.callFunction({
name:"mydata"//云函数名称
data:{
num:“”
}//传输的数据
})
云储存
在使用云储存时要保持HbuilderX支持这个版本的uni组件,我的由于使用半年前的HbuilderX,上传一直显示没权限,大家注意!!
直接引用组件就可以上传云储存库
<uni-file-picker
v-model="imageValue"
fileMediatype="image"
mode="grid"
@select="select"
@progress="progress"
@success="success"
@fail="fail"
/>
<script>
export default {
data() {
return {
imageValue:[]
}
},
methods:{
// 获取上传状态
select(e){
console.log('选择文件:',e)
},
// 获取上传进度
progress(e){
console.log('上传进度:',e)
},
// 上传成功
success(e){
console.log('上传成功')
},
// 上传失败
fail(e){
console.log('上传失败:',e)
}
}
}
</script>
总结
提示:这里对文章进行总结:
uniCloud云端库基础的增删改查,以及遇到的问题,传图片直接显示403没全校上传云储存,已解决