# 快速开始

# 快速上手

以下是一个使用数据模型的示例:

假设我们有一个博客应用,需要管理文章和评论。在微信云开发数据库中,我们可以这样定义数据模型:

# 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 个模型:postcomment。每个模型都有一组字段,其中一些字段用于定义数据的结构,我们还定义了模型之间的关系,如commentpost之间的评论关系。

# 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
// }

# 进一步探索

  • 增删改查: 了解模型生成的 SDK 的完整使用方法
  • 关联查询: 查看使用模型如何进行关联查询
  • 在线体验: 查看基于数据模型 SDK 的 Demo 演示,可以在线体验和修改代码进行尝试。