概述
什么是数 据模型?
数据模型是云开发提供的声明式数据管理解决方案,它构建在云开发数据库之上,为开发者提供了一种更高效、更安全的数据操作方式。
简单来说,数据模型就像是为您的数据定制的"智能管家":
- 定义数据结构:通过可视化界面定义数据的字段、类型和关系
- 自动数据校验:确保数据的准确性和一致性
- 处理关联关系:自动管理数据之间的复杂关系
- 包含多端 SDK:一次定义,多端使用(小程序、Web、云函数)
- 内置管理界面:提供开箱即用的数据管理后台
- AI 智能分析:利用人工智能挖掘数据价值
核心理念:让开发者专注于业务逻辑,而不是底层数据操作的复杂性。
使用 AI 开发、对接和管理数据库
核心特性一览
| 特性 | 描述 | 价值 |
|---|---|---|
| 智能数据校验 | 自动检查数据类型和格式,防止错误数据入库 | 提高数据质量,减少 Bug |
| 关联关系管理 | 自动处理一对一、一对多、多对多关系 | 简化复杂查询,提升开发效率 |
| 多端 SDK 支持 | 一次定义,自动生成小程序/Web/云函数 SDK | 统一开发体验,减少重复工作 |
| 可视化管理 | 内置 CMS 管理界面,支持非技术人员操作 | 降低运营成本,提升协作效率 |
| 低代码应用生成 | 一键生成可定制的管理后台应用 | 快速交付,缩短开发周期 |
| AI 数据分析 | 智能分析数据趋势和模式 | 数据驱动决策,挖掘业务价值 |
| 高级查询能力 | 支持复杂条件查询、聚合分析等 | 满足多样化业务需求 |
数据模型和数据库的关系
-
数据模型是对数据库的建模,它定义了数据模型的结构、字段、约束和关系。数据模型提供了一种统一的方式来描述和操作数据,简化了数据操作和查询。数据模型能力即为开发中常用的对象关系映射 ORM。
-
数据模型和数据库是关联关系,一个数据模型,对应了数据库中的一个集合(非结构化数据库)或表(结构化数据库)。
-
使用数据模型,不代表被限制为仅能使用数据模型。在使用数据模型的同时,如果需要有更复杂、或数据模型无法很好完成的操作,也可以通过数据库的原生方法,直接操作数据库完成数据读写。
-
相对于传统开发框架中的 ORM,云开发数据模型除 ORM 相关的 SDK 操作数据的能力外,额外整合了数据管理界面、用户及权限体系、内容管理以及进一步的基于数据模型的应用生成、数据分析等更多能力。更多优势点可以查看 "为什么要使用数据模型"。
快速开始
第一步:访问控制台
- 选择数据库:
- 创建模型:点击「新建模型」,选择创建方式
第二步:开始使用
新建模型后,您就可以立即使用数据模型提供的各项强大能力了!
建议先阅读 快速开始教程,通过实际案例快速上手。
快速开始
通过博客系统案例学习数据模型基本使用
SDK 参考
详细的 API 文档和使用方法
关联关系
配置 和使用数据模型之间的关联关系
为什么选择数据模型?
数据模型为开发者带来了全方位的开发体验提升:
- 提高开发效率:自动生成 SDK,减少重复代码编写
- 降低维护成本:统一的数据管理,减少运维工作量
- 增强数据安全:内置权限控制和数据校验机制
- 强化数据分析:AI 智能分析,挖掘数据价值
- 简化团队协作:可视化管理界面,技术与非技术人员都能轻松使用
智能数据校验和类型检查
数据模型提供自动化的数据校验机制,在数据入库前进行严格的类型检查和格式验证,确保数据的准确性和一致性,从源头避免数据质量问题。
实际案例演示
假设我们定义了一个文章模型 post,包含以下字段:
title(字符串类型)- 文章标题body(字符串类型)- 文章内容
现 在我们故意传入错误类型的数据来测试校验机制:
try {
const { data } = await models.post.create({
data: {
title: "你好,世界",
body: 123456, // ❌ 故意传入数字类型,期望的是字符串类型
},
});
console.log("创建成功:", data);
} catch (error) {
console.error("校验失败:", error);
}
校验结果
当 我们尝试插入类型错误的数据时,数据模型会立即检测到问题并阻止操作:
Error: WxCloudSDKError: 【错误】数据格式校验失败。根因:[#/body: expected type: String, found: Integer],原因:字段[正文], 标识[body], 类型不匹配:期望类型:字符串。,解决步骤:请按照原因修改数据类型。 errRecord:{"title":"你好,世界","body":123456}【操作】调用 post.create
校验优势
- 精确定位:准确指出哪个字段出现了什么问题
- 友好提示:提供清晰的错误原因和解决建议
- 数据保护:防止脏数据进入数据库
- 减少 Bug:在开发阶段就发现数据类型问题
智能关联关系处理
数据模型能够自动处理复杂的数据关联关系,支持一对一、一对多、 多对多等各种关系类型。无需手动编写复杂的 JOIN 查询,系统会自动处理数据之间的关联逻辑。
关联查询示例
以文章和评论的关联关系为例,我们可以轻松实现跨模型的数据查询。通过 select 参数,可以精确控制返回的字段和关联数据:
const { data } = await models.post.list({
// 精确控制返回字段,优化查询性能
select: {
_id: true,
title: true,
updatedAt: true,
// 关联查询评论数据
comments: {
_id: true,
createdAt: true,
comment: true,
},
},
filter: {
where: {}, // 查询条件
},
getCount: true, // 获取总数
});
console.log("查询结果:", data);
返回结果
系统会自动处理关联关系,返回结构化的数据:
{
"records": [
{
"_id": "9FSAHWM9VV",
"title": "Bonjour le Monde",
"updatedAt": 1718096503886,
"comments": [
{
"_id": "9FSAJF3GLG",
"createdAt": 1718096509916,
"comment": "这是一条评论"
}
]
},
{
"_id": "9FSAHWM9VU",
"title": "你好,世界",
"updatedAt": 1718096503886,
"comments": [] // 暂无评论
}
],
"total": 2
}
关联查询优势
- 性能优化:只返回需要的字段,减少数据传输
- 自动关联:无需手写复杂的 JOIN 语句
- 多层嵌套:支持深层次的关联数据查询
- 精确控制:灵活指定每个关联对象的返回字段
多端 SDK 自动生成
云开发平台提供了多端对接的 SDK,支持小程序、Web、云函数等多个平台。一次定义,多端复用,大幅提升开发效率。