更新或创建数据
初始化 SDK
import cloudbase from "@cloudbase/js-sdk";
const app = cloudbase.init({
env: "your-env-id", // 替换为您的环境id
});
const db = app.rdb();
更新或创建数据
通过 upsert() 方法执行更新或插入操作,如果记录不存在则插入,存在则更新。
db.from(tableName).upsert(values, options)
- tableName:表名称
- values:要 upsert 的数据
- options:upsert 选项配置
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| values | object | Array | 是 | 要 upsert 的值。传递对象以 upsert 单行,或传递数组以 upsert 多行 |
| options | object | 否 | upsert 选项配置 |
options 参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| count | string | 否 | 用于计算 upserted 行数的计数算法:"exact" - 底层执行 COUNT(*) |
| ignoreDuplicates | boolean | 否 | 如果为 true,则忽略重复行。如果为 false,则重复行与现有行合并 |
| onConflict | string | 否 | 逗号分隔的唯一索引列,用于指定如何确定重复行。当所有指定的列都相等时,两行被视为重复。在 PostgreSQL 中,这通常对应于唯一索引或主键 |
代码示例
Upsert 数据
// 如果 articles 表中存在 id 为 1 的记录则更新 title 为"PostgreSQL 教程",不存在则插入新记录
const { data, error } = await db
.from("articles")
.upsert({ id: 1, title: "PostgreSQL 教程" });
console.log('Upsert 结果:', data);
批量 Upsert 数据
// 批量 upsert 多条记录:id 为 1 的记录 title 设为"PostgreSQL 教程",id 为 2 的记录 title 设为"Redis 指南"
const { data, error } = await db.from("articles").upsert([
{ id: 1, title: "PostgreSQL 教程" },
{ id: 2, title: "Redis 指南" },
]);
console.log('批量 Upsert 结果:', data);