{
"name": "张三",
"age": 20,
"sex": "男"
}
{
"name": "李四",
"age": 22,
"sex": "男"
}
{
"name": "王二",
"age": 18,
"sex": "女"
}
{
"name": "麻子",
"age": 16,
"sex": "女"
}
<script setup>
import { onMounted } from 'vue';
onMounted(()=>{
uniCloud.callFunction({
name:"demo01", // 这个name就是云函数名称
data:{ // 不传参的话可以把data去掉
name:'哈哈',
age:20
}
}).then((res)=>{
console.log(res); // 这个res返回的就是上传的参数
})
})
</script>
192.168.1.92:5173
- 则点开跨域配置 - 新增域名 - 将我本地域名添加进去即可 - 如果项目放到静态网页托管之类的平台也是同样将其他平台域名添加进去即可点击查看web端跨域解决方案上面已经讲了怎么创建数据库并且新增了四条数据在里面
相关的增删改查文档地址
新增getData
云函数,代码如下
'use strict';
const db = uniCloud.database(); // 个人理解为是获取数据库实例
exports.main = async (event, context) => {
// 获取demo集合的引用,集合就是表,get()方法默认是获取全部数据
let res = db.collection('demo').get()
//返回数据给客户端
return res
};
页面发请求代码如下
<script setup>
import { onMounted } from 'vue';
onMounted(()=>{
uniCloud.callFunction({
name:"getData", // 这个name就是云函数名称
}).then((res)=>{
console.log(res); // 这个res返回的就是上传的参数
})
})
</script>
查看控制台打印可以发现打印到了所有的数据
'use strict';
const db = uniCloud.database(); // 个人理解为是获取数据库实例
exports.main = async (event, context) => {
// 获取demo集合的引用,集合就是表,count()方法返回数据总条数
let res = db.collection('demo').count()
//返回数据给客户端
return res
};
页面发请求代码同上
'use strict';
const db = uniCloud.database();
exports.main = async (event, context) => {
// 查询指定条数(如下只查询两条数据)
// let res = await db.collection('demo').limit(2).get()
// 查询指定条数并跳过多少条(就是跳过前两条,从第三条开始查询数据)
// skip公式为: skip((pageNum - 1) * pageSize) pageNum是当前页码,pageSize是每页数量
// 例如查询每页10条数据,从第三页开始,则limit(10).skip((3 - 1) * 10)
let res = await db.collection('demo').limit(2).skip(2).get()
//返回数据给客户端
return res
};
页面发请求代码同上
'use strict';
const db = uniCloud.database();
exports.main = async (event, context) => {
// 如下就是根据id升序排列
let res = await db.collection('demo').orderBy('_id','asc').get()
// 如下就是根据id降序排列
// let res = await db.collection('demo').orderBy('_id','desc').get()
//返回数据给客户端
return res
};
页面发请求代码同上
'use strict';
const db = uniCloud.database();
exports.main = async (event, context) => {
// 过滤字段(如下代码只返回name字段数据)
let res = await db.collection('demo').field({"name":true}).get()
//返回数据给客户端
return res
};
'use strict';
const db = uniCloud.database();
const dbCmd = db.command;
exports.main = async (event, context) => {
// 根据姓名查询张三的数据
// let res = await db.collection('demo').where({
// name:'张三',
// }).get()
// 查询姓名为张三,并且年龄为20的数据
// let res = await db.collection('demo').where({
// name:'张三',
// age:20
// }).get()
// 使用函数过滤查询(更多方法可以参考官方文档: https://doc.dcloud.net.cn/uniCloud/cf-database.html#dbcmd)
let res = await db.collection('demo').where({
// age: dbCmd.eq(20) // 查询年龄为20的用户的数据
// age: dbCmd.gt(20) // 查询年龄大于20的用户的数据
// age:dbCmd.gt(18).and(dbCmd.lt(40)) // 查询年龄大于20并且小于40的数据
// age:dbCmd.and(dbCmd.gt(20),dbCmd.lt(40)) // // 查询年龄大于20并且小于40的数据
// age:dbCmd.in([20,22]) // 查询年龄是20和22的数据
// age:dbCmd.nin([20,22]) // 查询年龄不是20和22的数据
// age:dbCmd.or(dbCmd.lt(20),dbCmd.gt(40)) // 查询年龄是小于20或者大于40的数据
// age:dbCmd.lt(18).or(dbCmd.gt(20).and(dbCmd.lt(40))) // // 查询年龄小于18或者年龄大于20小于40的数据
}).get()
return res
};
点击查看官方文档: https://doc.dcloud.net.cn/uniCloud/cf-database.html#regexp
'use strict';
const db = uniCloud.database();
const dbCmd = db.command;
exports.main = async (event, context) => {
let keyword = '张'
let res = await db.collection('demo').where({
name:new RegExp(keyword,"ig") // 不区分大小写和全局匹配,参数一就是正则表达式
}).get()
return res
};
新增onceAddData
云函数,代码如下
'use strict';
const db = uniCloud.database(); // 个人理解为是获取数据库实例
exports.main = async (event, context) => {
let {
name,
age,
sex
} = event // 解构参数
// 获取demo集合的引用,集合就是表,add()方法添加数据
let res = db.collection('demo').add({
name,
age,
sex
})
//返回数据给客户端
return res
};
页面发请求代码如下
<script setup>
import { onMounted } from 'vue';
onMounted(()=>{
uniCloud.callFunction({
name:"onceAddData", // 这个name就是云函数名称
data:{ // 传递的参数
name:'新增数据',
age:40,
sex:'女'
}
}).then((res)=>{
console.log(res); // 这个res返回的就是上传的参数
})
})
</script>
新增moreAddData
云函数,代码如下
'use strict';
const db = uniCloud.database(); // 个人理解为是获取数据库实例
exports.main = async (event, context) => {
let {arr} = event
// 获取demo集合的引用,集合就是表,add()方法添加数据
let res = db.collection('demo').add(arr)
//返回数据给客户端
return res
};
页面发请求代码如下
<script setup>
const sendData = ()=>{
uniCloud.callFunction({
name: "moreAddData", // 这个name就是云函数名称
data: {
arr: [{ // 传递的参数
name: '新增数据1',
age: 29,
sex: '女'
}, {
name: '新增数据2',
age: 38,
sex: '男'
}, {
name: '新增数据3',
age: 60,
sex: '女'
}]
}
}).then((res) => {
console.log(res); // 这个res返回的就是上传的参数
})
}
</script>
新增indexUpdateData
云函数,代码如下
'use strict';
const db = uniCloud.database();
exports.main = async (event, context) => {
let keyword = '张'
// 单个数据修改
// 如果修改的字段不存在,数据库会新增这个字段
let res = await db.collection('demo').doc("67a324db816a3ff63b232881").update({
name:'张三',
age:28
})
return {
msg:'修改成功',
res
}
};
页面发请求代码如下
<script setup>
const sendData = ()=>{
uniCloud.callFunction({
name: "indexUpdateData", // 这个name就是云函数名称
}).then((res) => {
console.log(res); // 这个res返回的就是上传的参数
})
}
</script>
'use strict';
const db = uniCloud.database();
const dbCmd = db.command;
exports.main = async (event, context) => {
let keyword = '张'
// 批量数据修改
// 如果修改的字段不存在,数据库会新增这个字段
let res = await db.collection('demo').where({
_id:dbCmd.in(['67a325c755b337b42b584294','67a324db816a3ff63b232881'])
}).update({
name:'哈哈',
age:30
})
return {
msg:'修改成功',
res
}
};
页面发请求代码同上
云数据库新增如下一条记录
{
"name": "运动员",
"age": 25,
"sex": "男",
"hobby": [
"篮球",
"足球",
"乒乓球",
"羽毛球"
],
"detial": {
"address": "南京",
"phone": 15900000000
}
}
执行修改
'use strict';
const db = uniCloud.database();
const dbCmd = db.command;
exports.main = async (event, context) => {
let keyword = '张'
// 数组或者对象数据的修改
let res = await db.collection('demo').where({
_id: '67a4840ce0ec19c842438380' // 根据id获取到这条数据
}).update({
hobby: { // 修改数组的方法,根据下标设置
2: '铅球' // 将数组的下标索引为2的数据改成铅球
},
// detial:{
// address:'北京' // 将对象的address的数据改成北京
// }
"detial.address": '上海' // 将对象的address的数据改成上海
})
return {
msg: '修改成功',
res
}
};
'use strict';
const db = uniCloud.database();
const dbCmd = db.command;
exports.main = async (event, context) => {
// 更新操作符的使用
let res = await db.collection('demo').where({
_id: '67a4840ce0ec19c842438380' // 根据id获取到这条数据
}).update({
// hobby: dbCmd.unshift(['游泳','跳水']) // 给数组向前追加两个数据
// hobby: dbCmd.push(['打游戏','看电视']) // 给数组向后追加两个数据
// hobby:dbCmd.pop() // 删除数组最后一个元素
// hobby:dbCmd.shift() // 删除数组最前的一个元素
// age:dbCmd.inc(1) // age字段自增1,自减的话就是-1,常用用直播间点赞,网站访问量等等自增数据的操作
// age:dbCmd.mul(2) // age字段自乘以2
})
return {
msg: '修改成功',
res
}
};
'use strict';
const db = uniCloud.database();
const dbCmd = db.command;
exports.main = async (event, context) => {
// 更新操作符的使用(这里只能使用doc获取引用,使用where会报错)
let res = await db.collection('demo').doc('67a4840ce0ec19c842438380').set({
tel:12121212212 // 这样的话整条数据就只要tel
})
return {
msg: '修改成功',
res
}
};
新增indexDeleteData
云函数,代码如下
'use strict';
const db = uniCloud.database();
const dbCmd = db.command;
exports.main = async (event, context) => {
// 根据id删除
// 方式一
let res = await db.collection('demo').doc('67a325ecc3b5c934eb45487b').remove()
// 方式二
// let res = await db.collection('demo').where({
// _id:'67a4840ce0ec19c842438380'
// }).remove()
return {
msg: '修改成功',
res
}
};
新增indexDeleteAllData
云函数,代码如下
先将数据导出避免丢失 - 点击导出 - 选择json - 删除完毕后点击导入再刷新数据就回来了
'use strict';
const db = uniCloud.database();
const dbCmd = db.command;
exports.main = async (event, context) => {
// 条件删除
let res = await db.collection("demo").where({
age:dbCmd.gt(18) // 删除年龄大于18的所有数据
}).remove()
return {
msg: '修改成功',
res
}
};
完成了上面的增删改查就可以去做一些网页项目了,当我们做完打包后可以托管到云服务器,具体配置如下
wxapp
文件夹下面有个index.html
文件)/wxapp
即可访问到里面的index.html
页面index.html
,默认访问的是这个页面可以参考这个博客,我觉得写的挺好
可以参考这个视频,从进度条5:30开始配置域名了
一般提供的默认域名仅供测试使用,正式版会有访问限制,解决办法就是配置自己的域名即可不受限制
购买域名和备案这里我就不讲了,如果有域名的话,看下面教程
xxx.top
demo.xxx.top
出现弹窗提示验证
上面操作主要是为了获取cname
值,不管有没有上面的弹窗只要是添加到列表里面后面都要执行下这个操作
CNAME
值CNAME
- 主机记录输入云开发后台添加的域名前缀,记录值就是上面让复制的CNAME
分别填写上点击确定即可/wxapp
后缀即可访问/wxapp/index.html
页面了可以发现域名是http的这个不是安全协议,这里教大家怎么改成https的
.pem
和.key
文件,有时候生成不完整,如果不全重新操作生成.pem
文件用记事本打开然后全选里面内容,复制粘贴到第一个输入框内 - 同理.key
内容也是这个粘贴到输入框内 - 点击确定 - 点击http强制跳转https
开关打开即可微信小程序和APP的打包非常简单这里就不讲了,可以查看如下视频:
uni-file-picker官方文档
点击下载导入插件到项目里面
<template>
<uni-file-picker v-model="imageValue" fileMediatype="image" mode="grid" @select="select" @progress="progress"
@success="success" @fail="fail" />
</template>
<script setup>
import {
ref
} from 'vue'
const imageValue = ref([])
// 获取上传状态
const select = (e) => {
console.log('选择文件:', e)
}
// 获取上传进度
const progress = (e) => {
console.log('上传进度:', e)
}
// 上传成功
const success = (e) => {
// 这里会给我们回调一个在线地址,包含其他的详细的信息
console.log('上传成功',e)
}
// 上传失败
const fail = (e) => {
console.log('上传失败:', e)
}
</script>
然后打开页面选择文件就会自动上传到云后台了
<template>
<uni-file-picker v-model="imageValue" :auto-upload="false" fileMediatype="image" mode="grid" @select="select" @progress="progress"
@success="success" @fail="fail" ref="files"/>
<button @click="upload">上传文件</button>
</template>
<script setup>
import {
ref
} from 'vue'
const imageValue = ref([])
const files = ref(null)
const upload = ()=>{
// 触发此方法就会上传
files.value.upload()
}
// 获取上传状态
const select = (e) => {
console.log('选择文件:', e)
}
// 获取上传进度
const progress = (e) => {
console.log('上传进度:', e)
}
// 上传成功
const success = (e) => {
// 这里会给我们回调一个在线地址,包含其他的详细的信息
console.log('上传成功',e)
}
// 上传失败
const fail = (e) => {
console.log('上传失败:', e)
}
</script>
<template>
<button @click="checkedFile">选择图片</button>
<button @click="chooseFile">开始上传</button>
<image v-if="temFile.length>0" :src="temFile[0].path" mode=""></image>
</template>
<script setup>
import {
ref
} from 'vue';
const temFile = ref([])
const checkedFile = () => {
// 除了选择图片,还有文件,视频等等,api都是choose开头的
uni.chooseImage({
sizeType: ['original'], // original原图 compressed压缩图 默认两者都有
count: 1, // 最多选择1个图片
success: (res) => {
// 这里会返回一个本地服务器文件地址
console.log(res);
temFile.value = res.tempFiles
}
})
}
const chooseFile = () => {
uniCloud.uploadFile({
filePath: temFile.value[0].path,
cloudPath:temFile.value[0].name
}).then(res => {
// 这里包含返回的文件在线地址
console.log('上传云空间成功',res);
})
}
</script>