客户端直接连数据库
把之前在云函数中连接数据库的代码写到前端页面中来,
<script>
const db=uniCloud.database();
export default {
data() {
return {
title: 'Hello'
}
},
onLoad() {
this.getData();
},
methods: {
getData(){
db.collection("article").get().then(res=>{
console.log(res);
})
}
}
}
</script>
浏览器控制台会提示要配置一个json文件
schema:架构 就是通过schema来控制数据库的权限
创建schema
有两种方式创建schema,一种是在unicloud网页端控制台,一种是在项目目录下的database文件夹里
右键文件夹,选择下载所有的DBschema(数据库里已经有article这张数据表了,所以可以下载)
下载下来是这样的
这段表结构web端和下载下来的文件是一模一样的,是用来控制数据表权限的
{
"bsonType": "object",
"required": [],
"permission": {
"read": false,
"create": false,
"update": false,
"delete": false
},
"properties": {
"_id": {
"description": "ID,系统自动生成"
}
}
}
这个DBschema是下载下来的,如果没有创建数据库,云端就没有这个文件,可以在编辑器中手动创建,右键database文件夹,点击新建dbschema
创建一个cloudDemo,未来创建的数据表名称也要是这个名,在本地创建完了之后,还要右键这个文件点上传,因为云端没有这个文件
点击上传,会弹出这个窗口,点是
然后云端就创建了一个叫cloudDemo的数据表
在客户端连接数据库的这个问题是两个问题,第一个是缺少schema文件,上面解决了,第二个问题是匿名用户
匿名用户不允许看数据库, 在schema文件中,有一个属性permission,他的增删改查四个属性全是false,所以不能用,只要把read属性改成true,就不会报这个错了,这就是scheam对连接数据库的权限控制,连接数据库就要先通过scheam文件的校验,校验通过才允许连接
permission属性不仅仅能设置true和false,还能通过where设置条件
现在连接的是article数据表,把这个表结构的schema文件的read改成true,就直接通过客户端获取到数据了
// 文档教程: https://uniapp.dcloud.net.cn/uniCloud/schema
{
"bsonType": "object",
"required": [],
"permission": {
"read": true,
"create": false,
"update": false,
"delete": false
},
"properties": {
"_id": {
"description": "ID,系统自动生成"
}
}
}
现在不报错了