首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >AI 友好的云开发 MySQL SDK 它来了!微信小程序能直连关系型数据库了

AI 友好的云开发 MySQL SDK 它来了!微信小程序能直连关系型数据库了

原创
作者头像
蛋先生DX
发布2025-10-27 12:53:17
发布2025-10-27 12:53:17
910
举报
文章被收录于专栏:蛋先生说识蛋先生说识

写在最前

腾讯云开发最近上新了个能力,能让微信小程序(当然不止小程序啦~)直接访问 MySQL 云数据库,这给咱们开发者又多了一种直接操作数据库的方式。具体是咋肥事呢?且听下文慢慢道来~


前奏铺垫

丹尼尔:蛋兄,听说腾讯云开发近期刚推出一个新功能,现在微信小程序可以直接访问 MySQL 数据库了?

蛋先生:哟,消息挺灵通的嘛!其实以前也是可以访问 MySQL 数据库的,只是需要通过数据模型来间接操作

丹尼尔:数据模型?

蛋先生:可以理解为数据库之上的一层 ORM 层

丹尼尔:那既然都可以访问,有啥不同?

蛋先生:越上层,使用起来会更简单一些,但限制也会多一些,毕竟是在数据库之上的一层黑盒封装。而越接近底层,则会越灵活,开发者能发挥的空间也就越大

丹尼尔:哦,越接近底层,是不是越难了

蛋先生:倒不会啦,毕竟只是一些数据库使用的浅层知识,这点小菜对开发者们来说不在话下~


JS SDK - 前端开发者的福音

丹尼尔:那具体怎么用呢?

蛋先生:如果你对前端技术栈比较熟悉,那 js sdk 就是你的最佳选择了!无论是在 web 应用、服务端 nodejs 应用还是微信小程序里,都提供了相应的 js sdk 来直接访问 mysql 数据库

丹尼尔:举个栗子?

蛋先生:那我就举两个比较有代表性的例子吧:一个是简单的单表查询,另一个是稍复杂的多对多查询。至于其他场景,你可以自己去翻翻官方的文档,写得还是挺全面的

丹尼尔:好咧!

 ✎ 初始化

蛋先生:一切的开始,还是得从初始化说起。通过下面这段代码,我们就能在微信小程序中创建一个 MySQL 数据库连接实例。当然,对于 Web 应用或服务端的 Node.js 应用,也可以用类似的方式进行初始化

代码语言:js
复制
const { init } = require("@cloudbase/wx-cloud-client-sdk");

...

wx.cloud.init({
  env: "{{这里填上你的云开发环境 ID 哦}}",
});

const db = init(wx.cloud).mysql();

丹尼尔:OK,代码灰常的简单

蛋先生:接下来,我就用下面这三个简单的表来进行演示

 ✎ 简单的单表查询

蛋先生:先来演示一下最基础的单表查询

代码语言:js
复制
// 从 `articles` 表中查询所有 `title` 包含 "云开发" 的记录
const { data, error } = await db
  .from("articles")
  .select("*")
  .like("title", "%云开发%")
  
// 返回 data 的示例值
[
  {
    id: 1,
    title: "云开发MySQL新功能详解",
  }
];

丹尼尔:单表查询确实挺简单的,一看就明白

 ✎ 复杂的多对多

蛋先生:那我们再来看一下多对多查询,其实也同样很直观

代码语言:js
复制
// 从 `articles` 表中查询所有记录,并只返回每条记录的 id、title 字段,以及关联的 tags 中的 name 字段
const { data, error } = await db
  .from("articles")
  .select("id, title, tags(name)")
  
// 返回 data 的示例值
[
  {
    id: 1,
    tags: [
      {
        name: "云开发",
      },
      {
        name: "MySQL",
      },
    ],
    title: "云开发MySQL新功能详解",
  },
  {
    id: 2,
    tags: [
      {
        name: "微信小程序",
      },
    ],
    title: "微信小程序性能优化指南",
  }
]

丹尼尔:哇塞,太酷了!我之前用过 Supabase 的 supabase-js SDK,感觉两者很像啊!

蛋先生:你眼光真准!云开发的 MySQL JS SDK 在设计上确实和 supabase-js SDK 几乎一模一样

丹尼尔:为什么要这么设计呢?

蛋先生:我觉得啊,时代不同了。以前完全可以随意设计自己的 SDK,但现在是 AI 时代,要让 AI 熟悉一种新的 SDK 使用方式,是需要时间成本的。保持与 supabase-js SDK 一致,可以提高 AI 的适应性,毕竟现在的开发者几乎都离不开 AI 编程助手。


HTTP API - 非 JS 编程语言开发者的利器

丹尼尔:嗯,确实挺好用的。不过这样就只限于 JS 了。如果我想用 Go 来访问 MySQL 云数据库,该怎么办呢?

蛋先生:虽然目前还没有提供 Go SDK,但云开发贴心地提供了 HTTP API,所以你可以用任何编程语言写一个 HTTP 客户端来访问 MySQL 数据库

丹尼尔:这个 HTTP API 是什么样子的?

蛋先生:同样为了提高 AI 的适应性,HTTP API 在设计上选择遵循 PostgREST 标准协议

丹尼尔:哦,那也来用两个例子演示一下吧

蛋先生:好,那就满足一下你的好奇心吧

 ✎ 简单的单表查询

蛋先生:一样的,先来演示一个简单的单表查询

代码语言:shell
复制
# 从 `articles` 表中查询所有 `title` 包含 "云开发" 的记录

curl -i -X GET 'http://{{host}}/v1/rdb/rest/v1/articles?select=*&title=like.%云开发%' \
-H 'Authorization: Bearer <This is a fake token, please use yours>' \
-H 'Prefer: return=representation'

丹尼尔:不错,依然简单明了

 ✎ 复杂的多对多

蛋先生:最后,我们也来演示一个多对多的查询

代码语言:sh
复制
# 从 `articles` 表中查询所有记录,并只返回每条记录的 id、title 字段,以及关联的 tags 中的 name 字段

curl -i -X 'GET http://{{host}}/v1/rdb/rest/articles?select=id,title,tags(name)' \
-H 'Authorization: Bearer <This is a fake token, please use yours>'

丹尼尔:Cool~


控制台 - 数据库管理新体验

蛋先生:这次还配套上线了在线 MySQL 数据库管理端。功能虽然算不上花哨,但我觉得关联表功能比以前的数据模型要好一些

丹尼尔:怎么说?

蛋先生:举个例子,user_article 模型里有个字段 user_id 要关联 user 模型,在配置关联时,需要声明在 user 模型中的字段,一开始我还真不适应

丹尼尔:确实,居然可以在 user_article 模型的地盘直接给 user 模型加字段,都不知道 user 模型同意不?

蛋先生:呵呵!还有一个问题,如果 user 模型被多个模型关联,那简直就是灾难。因为在 user 模型里会出现多个代表其他模型的字段,如果这里有 10 个,你可以想象字段在 user 模型中泛滥成灾的景象

丹尼尔:嗯,确实如此。那新的 MySQL 数据库管理端是什么样的?

蛋先生:跟你预期的一样,user_article 表的 user_id 关联 user 表的 _id,一切都是那么自然

丹尼尔:哦,那 user 表的字段也不会被污染了

蛋先生:是的,看起来是不是很清爽

丹尼尔:那 user_article 能查看具体关联的 user 信息吗?这应该是 user_article 表关心的内容

蛋先生:当然可以


不足与期待

丹尼尔:看起来很不错啊。哦,对了,我记得以前数据模型提供的 SDK 是没有事务支持的

蛋先生:是的,这确实是个小硬伤。遗憾的是,这次 MySQL JS SDK 依旧没带上。不过嘛,事务本来就主要用在服务端,对小程序等前端调用影响不大。听说后面是有计划推出的,然后还有实时推送等这些刚需功能,还是可以小期待一下的~So,在这一块上,和数据模型算是五五开吧 😅

丹尼尔:嗯,那我先去了解了解,同时期待这些实用的功能尽快上线


写在最后

“亲们,都到这了,要不,点赞或收藏或关注支持下我呗 o( ̄▽ ̄)d”

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在最前
  • 前奏铺垫
  • JS SDK - 前端开发者的福音
    •  ✎ 初始化
    •  ✎ 简单的单表查询
    •  ✎ 复杂的多对多
  • HTTP API - 非 JS 编程语言开发者的利器
    •  ✎ 简单的单表查询
    •  ✎ 复杂的多对多
  • 控制台 - 数据库管理新体验
  • 不足与期待
  • 写在最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档