查询数据
初始化 SDK
import cloudbase from "@cloudbase/node-sdk";
const app = cloudbase.init({
env: "your-env-id", // 替换为您的环境id
});
const db = app.rdb();
基础查询
通过 select() 方法查询表数据,支持条件筛选、关联查询等功能。
db.from(tableName).select(columns, options)
- tableName:表名称
- columns:要检索的列,用逗号分隔
- options:查询选项配置
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| columns | string | 否 | 要检索的列,用逗号分隔。支持使用 aliasName:foreignKey(columns) 语法重命名外键关联字段columns 取 * 为查询所有字段 |
| options | object | 否 | 查询选项配置 |
options 参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| count | string | 否 | 计数算法,可选值:"exact" - 底层执行 COUNT(*) |
| head | boolean | 否 | 设置为 true 时不返回数据,仅在需要计数时有用 |
代码示例
查询所有数据
// 查询 articles 表中的所有数据
const { data, error } = await db.from("articles").select();
console.log('查询结果:', data);
查询指定列
// 只查询文章的标题和创建时间
const { data, error } = await db.from("articles").select("id, title, created_at");
console.log('查询结果:', data);
查询外键关联数据
// 使用别名 'category' 代替默认的 'categories' 字段名
const { data, error } = await db.from("articles").select(`
id,
title,
created_at,
category:categories(name)
`);
console.log('查询结果:', data);
返回结果
{
data: [
{
id: 1,
title: "文章标题",
created_at: "2023-01-01T00:00:00Z",
category: {
name: "前端开发"
}
},
// ... 其他记录
],
error: null
}
关联表查询
通过关联查询可以同时获取多个表的数据,支持一对一、一对多等关联关系。
示例表结构
为了更好地理解关联查询,我们先了解一下示例中使用的表结构:
表关系说明:
articles表通过category_id与categories表建立多对一关系articles表通过created_by与users表建立多对一关系(创建者)articles表通过updated_by与users表建立多对一关系(修改者)
查看完整的 SQL 建表语句
-- 用户表
CREATE TABLE users (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
email VARCHAR(100)
);
-- 分类表
CREATE TABLE categories (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100)
);
-- 文章表
CREATE TABLE articles (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(256),
content TEXT,
category_id BIGINT,
created_by BIGINT,
updated_by BIGINT,
created_at TIMESTAMP,
updated_at TIMESTAMP,
FOREIGN KEY (category_id) REFERENCES categories(id),
CONSTRAINT articles_created_by_fkey FOREIGN KEY (created_by) REFERENCES users(id),
CONSTRAINT articles_updated_by_fkey FOREIGN KEY (updated_by) REFERENCES users(id)
);
基础关联查询
// 查询文章数据,同时获取关联的分类信息
// 基于 articles.category_id = categories.id 的关联关系
const { data, error } = await db.from("articles").select(`
title,
categories(name)
`);
console.log('查询结果:', data);
查看返回结果示例
[
{
title: "JavaScript 入门教程",
categories: {
name: "前端开发"
}
},
{
title: "Node.js 实战",
categories: {
name: "后端开发"
}
}
]