DB Schema的其他属性
这里为了测试,先把读取数据库read改为true,否则不可用,后期也不会直接写true,这样写是没有保护作用的,以后会通过引入uni-id来实现对权限的验证
required必填项,新增时会用
properties用来设置字段类型
里面的_id是系统自动生成的,无需改动
// 文档教程: https://uniapp.dcloud.net.cn/uniCloud/schema
{
"bsonType": "object",
"required": [],
"permission": {
"read": true,
"create": false,
"update": false,
"delete": false
},
"properties": {
"_id": {
"description": "ID,系统自动生成"
}
}
}
可以通过默认值属性来设置默认值,$env是系统提供的一个全局变量,它的值有三个
新建一个dbschema表结构
里面创建了四个字段,标题、内容、时间、时间戳 并把读和创建改成true
// 文档教程: https://uniapp.dcloud.net.cn/uniCloud/schema
{
"bsonType": "object",
"required": [],
"permission": {
"read": true,
"create": true,
"update": false,
"delete": false
},
"properties": {
"_id": {
"description": "ID,系统自动生成"
},
"title":{
"bsonType": "string",
// 这个title是属性,上面的title是字段名
"title": "文章标题",
// 说明,开发者使用
"description": "文章的标题"
},
"content":{
"bsonType": "string",
"title": "内容",
"description": "文章内容"
},
"posttime":{
// 时间戳类型
"bsonType": "timestamp",
"title": "发布时间",
"description": "文章内容",
// 文章不通过前端传递,通过系统自动生成
// 默认值有两个
// defaultValue 用户可以覆盖
// forceDefaultValue 用户不能覆盖
"defaultValue":{
"$env": "now"
}
},
// 阅读次数字段
"hits":{
"bsonType": "int",
"title": "阅读量",
"defaultValue":33
}
}
}
接下来在前端向数据库添加一条数据进行测试
<template>
<view class="content">
<image class="logo" src="/static/logo.png"></image>
<button @click="addClick">新增</button>
<view class="text-area">
<text class="title">{{title}}</text>
</view>
</view>
</template>
<script>
const db=uniCloud.database();
export default {
data() {
return {
title: 'Hello'
}
},
onLoad() {
},
methods: {
addClick(){
db.collection("cloudDemo").add({
title:"123"
})
}
}
}
</script>
<style>
</style>
点击按钮后,云数据库中多了刚增加的一条数据
之前在schema中设置的两个默认值:一个时间戳和一个阅读量也有了
没有写默认值的字段,如果前端没有做判断(理论上前后端都应该对需要有的字段进行校验),直接提交了,也是可以创建出一条数据的,就像上面新建的这一条数据,前端是写了title的,如果不写这个title,创建出来的数据就是下面这样
对必填字段的校验,就把字段名写在required中,现在把title写到required中之后,再不写title就提交数据控制台会报错
// 文档教程: https://uniapp.dcloud.net.cn/uniCloud/schema
{
"bsonType": "object",
"required": ["title"],
"permission": {
"read": true,
"create": true,
"update": false,
"delete": false
},
在文档中还有一个属性是错误提示errorMessage,可以修改这个提示内容
文档在unicloud 云数据库 DB Schema表结构里面
这个属性值可以传字符串或对象
"title":{
"bsonType": "string",
// 这个title是属性,上面的title是字段名
"title": "文章标题",
// 说明,开发者使用
"description": "文章的标题",
// 修改报错信息
"errorMessage":"标题必须填写"
},
把前端页面之前提交的title值删掉,并在schema中把title设为必填项,然后添加errorMessage错误提示信息,再点新增按钮,浏览器控制台的报错信息如下