# 快速开始
# 快速上手
以下是一个使用数据模型的示例:
假设我们有一个博客应用,需要管理文章和评论。在微信云开发数据库中,我们可以这样定义数据模型:
# 1. 创建模型
在微信云开发云后台首页,点击【数据管理】选择【新建模型】,可以选择从空白创建:
# 文章模型(post)
创建一个文章数据模型,字段定义如下:
- 标题 (
title
): 文章的标题,单行文本。 - 别名 (
slug
): 文章的别名,用于 SEO 优化,单行文本。 - 内容 (
body
): 文章的正文内容,富文本格式。
# 评论模型(comment)
- 评论内容 (
comment
): 用户的评论内容,多行文本。 - 文章 (
post
): 评论所关联的文章,通过关联关系指向文章模型。文章和评论是一对多关系
// 文章数据模型 interface Post extends Model { title?: string; body?: string; slug?: string; comments?: Comment[]; } // 评论数据模型 interface Comment extends Model { comment?: string; post?: Post; }
在实际的数据操作中,系统会自动处理以下字段:
- 数据标识 (
_id
): 文章或评论的唯一标识符,系统自动生成。 - 创建时间 (
createdAt
): 文章或评论的创建时间,系统在创建时自动生成。 - 更新时间 (
updatedAt
): 文章或评论的最后更新时间,系统在更新时自动生成。 - 所有人 (
owner
): 文章或评论的所有者,通过关联关系指向用户模型。 - 创建人 (
createBy
): 创建文章或评论的用户,通过关联关系指向用户模型。 - 修改人 (
updateBy
): 最后修改文章或评论的用户,通过关联关系指向用户模型。 - 记录创建者 (
_openid
): 文章或评论的创建者,系统根据小程序用户自动生成。
通过这样的设计,开发者可以更专注于业务逻辑的实现,而不必担心底层数据的维护和管理。
在这个简化的例子中,我们定义了 2 个模型:post
和comment
。每个模型都有一组字段,其中一些字段用于定义数据的结构,我们还定义了模型之间的关系,如comment
和 post
之间的评论关系。
# 2. 初始化 SDK
可以直接把下方的 SDK 链接文件下载到小程序代码的目录(一般是 miniprogram
目录)中,保存为 wxCloudClientSDK.umd.js
https://tcb.cloud.tencent.com/wx-cloud-client-sdk/1.2.1/wxCloudClientSDK.umd.js
在 app.js 中加入如下代码:
const { init } = require("./wxCloudClientSDK.umd.js"); // 指定云开发环境 ID wx.cloud.init({ env: "some-env-id", // 当前的云开发环境 id }); const client = init(wx.cloud); const models = client.models; // 接下来就可以调用 models 上的数据模型增删改查等方法了 // models.post.create({ // data: { // body: "你好,世界👋\n\nfrom china", // title: "你好,世界👋", // slug: "hello-world-cn", // }, // }).then(({ data } => { console.log(data)}))
# 3. 读写模型数据
使用 create() 方法创建新文章:
const { data } = await models.post.create({ data: { body: "你好,世界👋\n\nfrom china", title: "你好,世界👋", slug: "hello-world-cn", }, }); // 返回创建的文章 id console.log(data); // { id: "7d8ff72c665eb6c30243b6313aa8539e"}
使用 list() 方法获取所有文章,返回查询到的数据列表 records
和 总数 total
const { data } = await models.post.list({ filter: { where: {}, }, pageSize: 10, // 分页大小,建议指定,如需设置为其它值,需要和 pageNo 配合使用,两者同时指定才会生效 pageNo: 1, // 第几页 getCount: true, // 开启用来获取总数 }); // 返回查询到的数据列表 `records` 和 总数 `total` console.log(data); // { // "records": [ // { // "owner": "Anonymous(95fblM7nvPi01yQmYxBvBg)", // "createdAt": 1717488585078, // "createBy": "Anonymous(95fblM7nvPi01yQmYxBvBg)", // "updateBy": "Anonymous(95fblM7nvPi01yQmYxBvBg)", // "_openid": "95fblM7nvPi01yQmYxBvBg", // "_id": "e2764d2d665ecbc9024b058f1d6b33a4", // "title": "你好,世界👋", // "body": "\"你好世界\"可以翻译成以下几种语言:\n\n英语:Hello World\n西班牙语:Hola Mundo\n法语:Bonjour le Monde\n德语:Hallo Welt\n意大利语:Ciao Mondo\n葡萄牙语:Olá Mundo\n荷兰语:Hallo Wereld\n日语:こんにちは、世界 (Konnichiwa, Sekai)\n韩语:안녕하세요, 세계 (Annyeonghaseyo, Segye)", // "slug": "hello-world", // "updatedAt": 1717490751944 // }, // { // ... // }, // ], // "total": 51 // }