跳到主要内容

自动生成 SDK 配置

本文定位

本文介绍如何使用 CLI 的 api pull 命令自动生成 SDK 配置文件,省去手动配置的麻烦。

如果你想了解 SDK 配置的完整说明(手动配置、多环境配置等),请参阅 SDK 配置指南

先理解一个背景

当你在 Lovrabet 工作台连接数据库后,系统会自动为每张数据表生成一个数据集(Dataset)

每个数据集都有:

  • 一个唯一的 datasetCode(如 8d2dcbae08b54bdd84c00be558ed48df
  • 对应的数据表名(如 orders
  • 自动生成的 CRUD API
┌─────────────────────────────────────────────────────────┐
│ Lovrabet 工作台 │
├─────────────────────────────────────────────────────────┤
│ 连接数据库 │
│ ↓ │
│ 自动分析表结构 │
│ ↓ │
│ 为每张表生成数据集(Dataset) │
│ ↓ │
│ 每个数据集自动拥有 API(增删改查) │
└─────────────────────────────────────────────────────────┘

SDK 需要什么配置?

要在前端项目中使用 Lovrabet SDK,你需要告诉 SDK "我要访问哪些数据集":

import { registerModels, createClient } from '@lovrabet/sdk';

// 这段配置告诉 SDK:我的应用有哪些数据集
registerModels({
appCode: 'your-app-code',
models: [
{ datasetCode: '8d2dcbae08b54bdd84c00be558ed48df', tableName: 'orders', alias: 'orders' },
{ datasetCode: 'a1b2c3d4e5f6789012345678abcdef12', tableName: 'customers', alias: 'customers' },
{ datasetCode: 'f9e8d7c6b5a4321098765432fedcba98', tableName: 'products', alias: 'products' },
// ... 可能有几十个数据集
],
});

const client = createClient();

问题来了:这些 datasetCode 从哪来?手动一个个复制粘贴?

CLI 自动生成这些配置

lovrabet api pull 命令就是解决这个问题的:

lovrabet api pull

它会:

  1. 连接 Lovrabet 后端
  2. 获取你应用下的所有数据集信息
  3. 自动生成 SDK 需要的配置文件
┌─────────────────────────────────────────────────────────┐
│ lovrabet api pull │
├─────────────────────────────────────────────────────────┤
│ 1. 读取你的 appCode │
│ 2. 从 Lovrabet 后端获取所有数据集 │
│ 3. 生成 src/api/api.ts(配置文件) │
│ 4. 生成 src/api/client.ts(可直接使用的客户端) │
└─────────────────────────────────────────────────────────┘

使用方式

第一步:确保已登录(已登录可跳过)

lovrabet auth

第二步:设置应用代码(已配置可跳过)

lovrabet config set app your-app-code

或者直接在命令中指定:

lovrabet api pull --appcode your-app-code

第三步:拉取配置

lovrabet api pull

执行后会生成两个文件:

src/api/api.ts - 包含所有数据集的配置:

import { registerModels, type ModelsConfig } from "@lovrabet/sdk";

export const LOVRABET_MODELS_CONFIG: ModelsConfig = {
appCode: "your-app-code",
models: [
{ datasetCode: "8d2dcbae08b54bdd84c00be558ed48df", tableName: "orders", alias: "orders" },
{ datasetCode: "a1b2c3d4e5f6789012345678abcdef12", tableName: "customers", alias: "customers" },
// ... 自动生成的所有数据集
],
};

registerModels(LOVRABET_MODELS_CONFIG);

src/api/client.ts - 封装好的客户端:

import { createClient } from "@lovrabet/sdk";
import "./api"; // 自动注册配置

export const lovrabetClient = createClient();

第四步:在项目中使用

import { lovrabetClient } from "@/api/client";

// 直接使用,所有配置已经自动完成
const orders = await lovrabetClient.models.orders.filter();
const customers = await lovrabetClient.models.customers.filter();

什么时候需要重新拉取?

当 Lovrabet 工作台有变化时:

  • 新增了数据表(新的数据集)
  • 删除了数据表
  • 数据集配置有变更

只需重新执行:

lovrabet api pull

自定义输出目录

默认生成到 ./src/api/,可以自定义:

lovrabet api pull --output ./lib/api

命名规则

生成的模型别名采用 camelCase 命名:

数据表名生成的别名
order_itemsorderItems
user_profileuserProfile
sales_recordssalesRecords

附:生成 API 文档

除了生成 SDK 配置,CLI 还可以生成 API 使用文档:

lovrabet api doc

生成 Markdown 格式的文档,包含字段定义、请求示例等,方便团队共享。

# 只生成指定数据集的文档
lovrabet api doc --datasetcode orders,customers

# 自定义输出目录
lovrabet api doc --output ./docs/api

常见问题

提示"请先配置应用 Code"

# 设置配置
lovrabet config set app your-app-code

# 或直接传参
lovrabet api pull --appcode your-app-code

API 拉取失败

  1. 检查登录状态:lovrabet auth
  2. 确认应用代码正确:lovrabet config get app
  3. 检查网络连接

生成的代码有编译错误

后端数据结构可能有变化,重新拉取:

lovrabet api pull