羊巴达b
开发者友好型和型号安全型 SDK 专门适应杠杆 蓝巴达德布 API (英语).
内容提要
LambdaDB API: LambdaDB 开放 API spec
目录
SDK 安装
SDK可以安装其中之一 无, (中文(简体) ), 小时, (中文(简体) ), 包头 或者说 线条 软件包管理器.
国家预防机制
npm add @functional-systems/lambdadb
菲律宾
pnpm add @functional-systems/lambdadb
阿宝
bun add @functional-systems/lambdadb
雅伦
yarn add @functional-systems/lambdadb
[注] 此软件包由CommonJS和ES模块(ESM)支持发布.
所需资源
对于支持的 JavaScript 运行时间, 请参考 运行时间.md。 。 。 .
SDK 示例使用法
我们建议 收藏范围客户端 (单位:千美元)LambdaDBClient:你得到一个手柄,一次一次一次的收集,然后调用方法而不通过 collectionName 每一个请求.
建议:LambdaDB客户端(收集范围)
客户端连接到 {baseUrl}/projects/{projectName}默认值 : 基数Url https://api.lambdadb.ai, (中文(简体) ), 工程Name playground覆盖 baseUrl 财务报告和审定财务报表 projectName 当创建客户端时.
import { LambdaDBClient } from "@functional-systems/lambdadb";
const client = new LambdaDBClient({
projectApiKey: "<YOUR_PROJECT_API_KEY>",
// Optional: baseUrl (default "https://api.lambdadb.ai"), projectName (default "playground")
});
async function run() {
// List all collections in the project (optional: pass { size, pageToken } for pagination)
const list = await client.listCollections();
console.log(list); // list.collections[].createdAt etc. are Date
// Work with a specific collection — no collectionName in every call
const collection = client.collection("my-collection");
await collection.get();
await collection.docs.list({ size: 20 });
await collection.docs.upsert({ docs: [{ id: "1", text: "hello" }] });
// For large document sets (up to 200MB), use bulkUpsertDocs for a single-call flow.
// Native embedding fields require caller-supplied vectors; bulk upsert never generates embeddings.
// await collection.docs.bulkUpsertDocs({ docs: largeDocArray });
}
run();
类型脚本
从包中导入请求和响应类型,用于类型安全使用. 使用 投入 方法参数类型和 回应 类型.
import {
LambdaDBClient,
type CreateCollectionInput,
type QueryCollectionInput,
type QueryCollectionResponse,
type ListDocsInput,
type ListDocsResponse,
} from "@functional-systems/lambdadb";
const client = new LambdaDBClient({ projectApiKey: "..." });
const collection = client.collection("my-collection");
// Typed list params
const params: ListDocsInput = { size: 20, pageToken: undefined };
const listResult: ListDocsResponse = await collection.docs.list(params);
// Typed query body and response (or use createQueryInput helper)
const queryBody: QueryCollectionInput = {
query: { text: "hello" },
size: 10,
};
const queryResult: QueryCollectionResponse = await collection.query(queryBody);
常见类型 : CreateCollectionInput, (中文(简体) ), UpdateCollectionInput, (中文(简体) ), QueryCollectionInput, (中文(简体) ), ListDocsInput, (中文(简体) ), ListCollectionsInput, (中文(简体) ), UpsertDocsInput, (中文(简体) ), DeleteDocsInput, (中文(简体) ), FetchDocsInput, (中文(简体) ), BulkUpsertInput; 响应类型,例如 QueryCollectionResponse, (中文(简体) ), ListDocsResponse, (中文(简体) ), ListCollectionsResponseWithDates, (中文(简体) ), GetCollectionResponseWithDates, (中文(简体) ), FetchDocsResponse, (中文(简体) ), MessageResponse; 数据版本类型, 如 ReadRef, (中文(简体) ), BranchSource, (中文(简体) ), RefSource, (中文(简体) ), AliasTarget, (中文(简体) ), SnapshotDetails, (中文(简体) ), ParentBranchDetails, (中文(简体) ), BranchDetails,以及 TagDetails;和模型类型,如 CollectionResponseWithDates, (中文(简体) ), IndexConfigsUnion, (中文(简体) ), IndexConfigsManagedEmbeddingVector, (中文(简体) ), EmbeddingConfig, (中文(简体) ), PartitionConfig, (中文(简体) ), FieldsSelectorUnion收集创建/列表/获取/更新并更新生命周期回复,将时间戳暴露为 Date。全部从主包中导出.
数据版本
创建收藏范围分支、标签和异名,然后选择一个参考文件 读作或写作处:
import {
LambdaDBClient,
aliasRef,
branchSource,
tagTarget,
} from "@functional-systems/lambdadb";
const client = new LambdaDBClient({ projectApiKey: "..." });
const collection = client.collection("knowledge-base");
await collection.branches.create({
branchName: "candidate",
source: branchSource("main"),
});
await collection.tags.create({
tagName: "release-001",
source: branchSource("candidate"),
});
await collection.aliases.create({
aliasName: "production",
target: tagTarget("release-001"),
});
await collection.docs.upsert({
branch: "candidate",
docs: [{ id: "doc-1", text: "candidate content" }],
});
for await (const page of collection.docs.listPages({
size: 50,
ref: aliasRef("production"),
})) {
console.log(page.docs);
}
指定读取或写入处保留现有的 main 行为.
分支创建只接受分支源; 省略 source 选择 main, (中文(简体) ),
财务报告和审定财务报表 branchSource(name, asOf) 支持点入时间创建。 标签创建
继续接受分支或Tag来源。 分支创建/列表回复包括
要求无效 parentBranch: { branchId, name }即使是空头;
main 和没有记录的父母返回的分支 null。 。 。 .
见 数据版本 生命周期方法,安全
错误, 点入时源, 签名批量上传, 以及转移客户端
配置 。 数据版本合同由Lambadb/docs承付
1714009a2659a18b26cb68193dd7a071fd6efb42 (单位:千美元)reference/api/openapi.json),它也允许
consistentRead: true 通过一个异形 瞄准一个分支。 删除引用的分支或标记
由异形失败 CatalogConflictError (HTTP语) 409; 删除或重新瞄准
所有参考的异名。 读取通过
目标失败 BadRequestError (HTTP语) 400),同时选择一个
不存在的参考失败 ResourceNotFoundError (HTTP语) 404) (中文(简体) ).
49个固定文本分析器预设文件载于 分析器 并使用单独的 固定来源合同。 。 。 .
索引字段描述
每个索引字段,包括嵌入对象的孩子,都接受可选
description 最多255个字符。 从不影响索引,而是被退回
仅于设定时读取。 打开 update,省略它保存存储
说明, "" 清除它, 并替换一个新的值; 这是唯一的设置
用于更新可能改变的现有字段。 服务器管理 id 字段
不接受一个。 见 索引连接。 。 。 .
await client.createCollection({
collectionName: "books",
indexConfigs: {
title: { type: "text", analyzers: ["english"], description: "Book title as printed on the cover" },
details: {
type: "object",
objectIndexConfigs: { pages: { type: "long", description: "Page count" } },
},
},
});
查询限制
查询 size密度 knn.k贝叶斯人 candidateSize,以及
rerank.candidateSize 最多可达1000人
固定后端合同。 。 。 .
查询结果和水合候选机构不再拥有总计64个米B
限制。 使用现有的 docsUrl 下载格式; 用尽
服务器共享的临时存储预算返回 HTTP 503 没有部分结果.
见 查询大小和字节限制。 。 。 .
脸桶保留了100个物品的限制. 获取并获取/ POP 列表支持
1000个ID/文档;列表默认为100个. 获取保留一个每节点的64 MiB JSON
预算。 见 改为合同。 。 。 .
源头对齐不会建立您的端点部署 .
原产地重新排序
通过一个可选的每克 rerank 对象 query 或者说 querySafe 与
provider: "typesafe" 财务报告和审定财务报表 model: "jev-1.13.0",或 provider: "cohere" 财务报告和审定财务报表
model: "rerank-v5.0-pro" 编号 : "rerank-v5.0-fast",加上非空白 queryText
和存储的 scalar 文本 fields。服务器管理证书。 对于TypeSafe,
选项 criteria 选择 2 - 10 命令的自定义描述; 省略/ 无效使用
默认标准。 联合体不接受标准.
见 原产地重新排序 默认/海关/Cohere 示例,
候选限制,反应字段和符合条件的倒置行为. 应用
score 是[0,1]的最后评价分数,而不是相关概率;
retrievalScore 保留外部原始搜索分数 doc检查
rerank.status 因为后退保留了搜索分数。 发件/无件 rerank
保持已有的查询行为.
关键词方面
按索引关键字值计算匹配文档,包括数组和点数
字段路径。 查询级别 size: 0 返回没有文档的计数; 省略 query
以计算选定读取范围内的所有文档.
const result = await client.collection("items").query({
size: 0,
facets: { tags: { size: 5 } },
});
for (const bucket of result.facets?.tags?.buckets ?? []) {
console.log(bucket.value, bucket.count);
}
querySafe 接受相同的输入。 请求最多五个关键字字段,其中
每个字段有1-100个桶(省略或无效时默认为10个). 计数覆盖所有
匹配文档,与返回的文档数量无关,并存
docsUrl 下载。 公共类型包括: FacetRequest, (中文(简体) ), FacetBucket,以及
FacetResult。 。 。 .
使用包含面元特性和新建关键字的服务器部署 索引。 必须将现有数据重新插入新的收藏;旧标记和 部分索引更新不迁移格式。 见 关键词方面 用于支持查询、限制和验证证据.
倾斜
联合国 使用 listPages() 以不将所有东西装入内存的方式在所有页面上进行排列,或者 listAll() 以将所有文件合并到一个单一的列表中。 每个页面是一个 API 响应; API 限制响应大小 有效载数,而不是根据文档数,所以每页文件数可能少于请求的 size 并可以因页面而异。 方法 list(), (中文(简体) ), query(),以及 fetch() 当 API 通过返回时, 自动解析来自预先签名的 URL 的文档 docsUrl (单位:千美元)isDocsInline: false所以,你总是得到 docs 在回应中.
页面符号是不透明的搜索位置,而不是快照针. 为了一个稳定 多页导出, 选择相同的不可移动标记并保留过滤器和字段 在每个页面上选择不变.
import { LambdaDBClient } from "@functional-systems/lambdadb";
const client = new LambdaDBClient({ projectApiKey: "..." });
const collection = client.collection("my-collection");
// Page-by-page (memory efficient)
for await (const page of collection.docs.listPages({ size: 50 })) {
console.log(page.docs.length, page.nextPageToken ?? "last page");
}
// Or load all docs (for small/medium collections)
const { docs, total } = await collection.docs.listAll({ size: 100 });
console.log(docs.length, total);
收藏: 使用 listCollections(params?) 可选 size 财务报告和审定财务报表 pageToken,或 listCollectionsPages(params?) 编号 : listAllCollections(params?) 将所有藏品逐行删除或取出.
// One page
const page = await client.listCollections({ size: 20 });
// Page-by-page
for await (const page of client.listCollectionsPages({ size: 20 })) {
console.log(page.collections.length, page.nextPageToken ?? "last");
}
// All collections
const { collections } = await client.listAllCollections({ size: 50 });
查询助手
使用 createQueryInput() 以构建查询参数 collection.query() 或者说 collection.querySafe()数字 :
import { LambdaDBClient, createQueryInput } from "@functional-systems/lambdadb";
const client = new LambdaDBClient({ projectApiKey: "..." });
const collection = client.collection("my-collection");
const input = createQueryInput({ text: "hello" }, { size: 10 });
const result = await collection.query(input);
相容性
对于常见的 Qdrant JavaScript 客户端迁移路径, 请使用明确路径 Qdrant 相容性适配器 :
import { QdrantCompatClient, models } from "@functional-systems/lambdadb/compat/qdrant";
const client = new QdrantCompatClient({
projectApiKey: "<YOUR_PROJECT_API_KEY>",
projectName: "playground",
});
await client.createCollection("docs", {
vectorsConfig: new models.VectorParams({
size: 64,
distance: models.Distance.COSINE,
}),
});
适配器覆盖了常见的稠密载体RAG子集,而不是一个完整的Qdrant 客户端替换。 见 文件/兼容性/qdrant.md 用于支持方法、数据映射和不支持的特性.
Live Qdrant 兼容性烟雾测试可以从本地装入证书 .env
文件 :
cp .env.example .env
# Fill in LAMBDADB_PROJECT_API_KEY and set LAMBDADB_RUN_LIVE_TESTS=1.
npm run test:live:qdrant
LangChain JS和LlamaIndex TS的外部融合烟雾测试 正在处理的假LambdaDB运输,不需要证明:
npm run test:external:qdrant
原生嵌入
原生嵌入向量字段从已配置的 JSON 生成向量
路径。 来源及其对象的祖先不需要指数声明. 声明
向量字段,将原始 JSON 写入,并查询 knn.queryText数字 :
import { LambdaDBClient } from "@functional-systems/lambdadb";
const client = new LambdaDBClient({ projectApiKey: "..." });
await client.createCollection({
collectionName: "semantic-items",
indexConfigs: {
bodyEmbedding: {
type: "vector",
embedding: {
provider: "openai",
model: "text-embedding-3-small",
sources: [{ field: "article.body", type: "text" }],
},
},
},
});
const collection = client.collection("semantic-items");
await collection.docs.upsert({
docs: [{ id: "policy-1", article: { body: "Refunds are available within 30 days." } }],
});
const result = await collection.query({
size: 10,
query: {
knn: {
field: "bodyEmbedding",
queryText: "refund policy",
k: 10,
},
},
});
遗产 sourceField: "article.body" 表格仍然支持。 代码
(单位:千美元)embed-v5.0-pro 编号 : embed-v5.0-fast)也接受命令的文本和图像
sources 和混合 knn.queryInputs; 见
命令和图像源。 。 。 .
rerank.fields 可以选择相同的无索引字符串路径。 添加适当的来源
当您还需要从词典中查找、过滤或排序这些字段时,您需要索引.
这需要 本地嵌入合同
在已部署的端点上; 仅用一面遗留的旗帜并不能使无索引来源成为可能.
认证
常客安全计划
这个SDK在全球支持以下安全计划:
| 名称 | 类型 | 计划 | 环境变量 |
|---|---|---|---|
projectApiKey | 键 | API 密钥 | LAMBDADB_PROJECT_API_KEY |
用 API 认证 projectApiKey 初始化 SDK 客户端实例时必须设置参数 。 例如:
import { LambdaDBClient } from "@functional-systems/lambdadb";
const client = new LambdaDBClient({
projectApiKey: "<YOUR_PROJECT_API_KEY>",
});
async function run() {
const result = await client.listCollections();
console.log(result);
}
run();
现有资源和业务
可用方法
收款
- 列表 - 列出现有项目中的所有收藏( 支持 pagination :
size, (中文(简体) ),pageToken) (中文(简体) ). 打开 LambdaDB 客户端 使用情况listCollections(params?), (中文(简体) ),listCollectionsPages(params?),或listAllCollections(params?)重复;收集答复包括:createdAt编号 :updatedAt编号 :dataUpdatedAt作为Date。 。 。 . - 创建 - 创建一个收藏.
- 删除 - 删除现有的收藏.
- 起来 - 获取现有收藏的元数据.
- 更新 - 配置一个收藏.
- 查询 - 以查询方式搜索收藏,并返回最相似的文档.
藏书. 文档
- 列表标记 - 列出收藏中的文档.
- 升级 - 将文档放入收藏中。 注意最大支持有效载荷尺寸为6MB.
- 散装升华标记 - 在一次调用(最多200MB)中将文档分批进行;当您有文档列表时,将此用于最佳 DX 。 原生嵌入场需要调用器提供向量;批量提升不会产生嵌入.
- 获得布克 Upsert - 要求上传文件所需的信息。 原生嵌入场需要调用器提供向量;批量提升不会产生嵌入.
- 块集 - 将文件集中起来 注意最大支持对象大小为200MB. 原生嵌入场需要调用器提供向量;批量提升不会产生嵌入.
- 更新 - 更新收藏中的文档。 注意最大支持有效载荷尺寸为6MB.
- 删除 - 准确通过一个文件ID或查询过滤器删除文档.
- 获取 - 以文件身份从收藏中查找和退回文件.
遗产 API( C)LambdaDB(中文(简体) )
经典客户端 LambdaDB 仍然支持兼容性。 新代码应该更可取 LambdaDBClient 财务报告和审定财务报表 client.collection(name)。 。 。 .
import { LambdaDB } from "@functional-systems/lambdadb";
const lambdaDB = new LambdaDB({ projectApiKey: "<YOUR_PROJECT_API_KEY>" });
const result = await lambdaDB.collections.list();
await lambdaDB.collections.docs.listDocs({ collectionName: "my-collection", size: 20 });
见 文件/文件/收集/README.md 财务报告和审定财务报表 文件/文件/文件/README.md 用于完整遗留的 API 参考.
独立职能
上述所有方法都作为独立功能提供。 这些 函数是用于在浏览器中运行的应用程序的理想功能,没有服务器 运行时间或应用程序捆绑大小为主的其他环境 关心。 当使用捆绑器构建您的应用程序时, 全部未使用 功能将被从最后的捆绑中排除,或者被树切除.
要了解更多独立函数, 请检查 职能.md。 。 。 .
现有的独立职能
collectionsCreate- 创建一个收藏.collectionsDelete- 删除现有的收藏.collectionsDocsBulkUpsert- 将文件集中起来 注意最大支持对象大小为200MB. 原生嵌入场需要调用器提供向量;批量提升不会产生嵌入.collectionsDocsDelete- 准确通过一个文件ID或查询过滤器删除文档.collectionsDocsFetch- 以文件身份从收藏中查找和退回文件.collectionsDocsGetBulkUpsert- 要求上传文件所需的信息。 原生嵌入场需要调用器提供向量;批量提升不会产生嵌入.collectionsDocsListDocs- 列出收藏中的文档.collectionsDocsUpdate- 更新收藏中的文档。 注意最大支持有效载荷尺寸为6MB.collectionsDocsUpsert- 将文档放入收藏中。 注意最大支持有效载荷尺寸为6MB.collectionsGet- 获取现有收藏的元数据.collectionsList- 列出现有项目中的所有收藏.collectionsQuery- 以查询方式搜索收藏,并返回最相似的文档.collectionsUpdate- 配置一个收藏.
检索
重试行为由 SDK 配置 。 文档写入 API 请求使用备份
hTTP 默认重试 429,所有数据 5xx 答复(包括 500, (中文(简体) ), 502, (中文(简体) ), 503,以及
504),以及连接出错或运输超时。 待命 retries 覆盖
客户的 retryConfig。同样的重试设置适用于 *Safe 方法;
返回 a 结果不禁重试.
可重试 429 响应,后退执行尊重有效
Retry-After 头当现相. API不保证每个 429
包含此信头.
对于写作,错误不能证明突变没有发生. 这个 成功承诺后可能失去反应,自动重复 在SDK返回出错或成功响应前重新应用写入. 复议并不提供准确的一次执行.
在决定是否重试写前检查状态, 禁用自动 在初始通话中重复:
import { LambdaDBClient } from "@functional-systems/lambdadb";
const client = new LambdaDBClient({
projectApiKey: "<YOUR_PROJECT_API_KEY>",
});
const collection = client.collection("my-collection");
await collection.docs.upsert(
{ docs: [{ id: "doc-1", title: "Updated title" }] },
{ retries: { strategy: "none" } },
);
此选项可同时禁用 HTTP 状态和连接- 错误重试 .
仅设定 retryConnectionErrors: false 仍然允许重试 HTTP
答复,包括 502 财务报告和审定财务报表 504被重审 无效复试不
取消服务器侧写或确定其结果。 失败后,检查
目标分支声明并在发布前考虑操作的语义
再写一篇 SDK不自动进行这种调节.
更改一个 API 呼叫的重试策略, 通过 retries 在请求选项中:
import { LambdaDBClient } from "@functional-systems/lambdadb";
const client = new LambdaDBClient({
projectApiKey: "<YOUR_PROJECT_API_KEY>",
});
async function run() {
const result = await client.listCollections(undefined, {
retries: {
strategy: "backoff",
backoff: {
initialInterval: 1,
maxInterval: 50,
exponent: 1.1,
maxElapsedTime: 100,
},
retryConnectionErrors: false,
},
});
console.log(result);
}
run();
如果您想要覆盖所有支持重试的操作的默认重试策略, 您可以在 SDK 初始化时提供重试Config :
import { LambdaDBClient } from "@functional-systems/lambdadb";
const client = new LambdaDBClient({
retryConfig: {
strategy: "backoff",
backoff: {
initialInterval: 1,
maxInterval: 50,
exponent: 1.1,
maxElapsedTime: 100,
},
retryConnectionErrors: false,
},
projectApiKey: "<YOUR_PROJECT_API_KEY>",
});
async function run() {
const result = await client.listCollections();
console.log(result);
}
run();
超时和请求级别选项 : 您可以在创建客户端或每个呼叫时设置请求超时( ms)并重试行为. 如果没有设置, 没有请求超时 。 这个 RetryConfig 类型从软件包中导出,用于输入您的选项.
import { LambdaDBClient, type RetryConfig } from "@functional-systems/lambdadb";
const client = new LambdaDBClient({
projectApiKey: "...",
timeoutMs: 30_000, // 30s timeout for all requests
retryConfig: { strategy: "backoff", retryConnectionErrors: true },
});
// Override per request
await client.listCollections(undefined, { timeoutMs: 10_000, retries: { strategy: "none" } });
处理错误
LambdaDBError 是所有 HTTP 错误响应的基础类。 其属性如下:
| 财产 | 类型 | 说明 |
|---|---|---|
error.message | string | 错误消息 |
error.statusCode | number | HTTP 响应状态代码 eg 404 |
error.headers | Headers | HTTP 响应头 |
error.body | string | HTTP 躯体. 如果没有尸体返回, 则可以是空字符串 . |
error.rawResponse | Response | 原始 HTTP 响应 |
error.retryAfter | string | undefined | 可选 Retry-After 响应头. |
error.data$ | 可选的 一些错误可能包含结构化数据. 参见错误类。 。 。 . |
默认方法( 在错误上投掷)
常规方法失败。 获取错误和使用 instanceof 到狭义的类型。 从主软件包导出出出错类 :
import {
LambdaDBClient,
LambdaDBError,
UnauthenticatedError,
ResourceNotFoundError,
} from "@functional-systems/lambdadb";
const client = new LambdaDBClient({
projectApiKey: "<YOUR_PROJECT_API_KEY>",
});
async function run() {
try {
const result = await client.listCollections();
console.log(result);
} catch (error) {
if (error instanceof LambdaDBError) {
console.log(error.message, error.statusCode, error.body);
if (error instanceof UnauthenticatedError) {
console.log(error.data$.message);
}
if (error instanceof ResourceNotFoundError) {
console.log("Not found:", error.data$);
}
}
}
}
run();
安全方法(返回结果)
使用 *Safe 获取方法 Result<T, E> 而不是扔东西。 您可以在不尝试/抓取的情况下处理出错, 并缩小类型 :
import {
LambdaDBClient,
Result,
ResourceNotFoundError,
} from "@functional-systems/lambdadb";
const client = new LambdaDBClient({ projectApiKey: "..." });
const result = await client.listCollectionsSafe();
if (result.ok) {
console.log(result.value.collections);
} else {
const err = result.error;
if (err instanceof ResourceNotFoundError) {
console.log("Not found:", err.data$);
} else {
console.error(err);
}
}
可用安全方法: listCollectionsSafe, (中文(简体) ), createCollectionSafe, (中文(简体) ), collection.getSafe, (中文(简体) ), collection.updateSafe, (中文(简体) ), collection.deleteSafe, (中文(简体) ), collection.querySafe, (中文(简体) ), collection.docs.listSafe, (中文(简体) ), collection.docs.upsertSafe, (中文(简体) ), collection.docs.updateSafe, (中文(简体) ), collection.docs.deleteSafe, (中文(简体) ), collection.docs.fetchSafe, (中文(简体) ), collection.docs.getBulkUpsertSafe, (中文(简体) ), collection.docs.bulkUpsertSafe, (中文(简体) ), collection.docs.bulkUpsertDocsSafe编辑 Result 类型和类型 OK 编号 : ERR 帮助从软件包中导出 .
数据版本生命周期控件也提供 createSafe, (中文(简体) ), listSafe, (中文(简体) ),
deleteSafe,以及 aliases.retargetSafe。 。 。 .
错误分类
主错误 :
LambdaDBError: HTTP 错误响应的基础类.UnauthenticatedError:无正相. 状态代码401。 。 。 .TooManyRequestsError: 请求过多. 状态代码429。 。 。 .InternalServerError: 内部服务器出错. 状态代码500。 。 。 .ResourceNotFoundError: 资源未找到 。 状态代码404。 。 。 *CatalogConflictError:有条件目录冲突. 状态代码409。 。 。 .PayloadTooLargeError: 超过网关请求限制 。 状态代码413。 。 。 .BadGatewayError:意外下游故障. 状态代码502。 。 。 .ServiceUnavailableError: 短暂依赖失败。 状态代码503。 。 。 .GatewayTimeoutError: 网关最后期限已超过。 状态代码504。 。 。 .
少常见错误(8)
网络错误 :
ConnectionError: HTTP 客户端无法向服务器提出请求.RequestTimeoutError: HTTP 请求由于中止信号而超时.RequestAbortedError:HTTP请求被客户端中止.InvalidRequestError: 用于创建请求的任何输入无效.UnexpectedClientError:无法识别或出乎意料的错误.
继承从 LambdaDBError数字 :
BadRequestError:请求差. 状态代码400适用于13个方法中的10个ResourceAlreadyExistsError: 资源已经存在。 状态代码409适用于13个方法中的1个ResponseValidationError:从服务器返回的数据和SDK期望的结构之间的类型不匹配. 见error.rawValue原值和error.pretty()用于格式化良好的多行字符串.
* 检查 方法文档 以查看该错误是否适用.
服务器选择( API 基础 URL)
LambdaDBClient 将 API 基础构建为 {baseUrl}/projects/{projectName}。可以在创建客户端时覆盖默认值.
| 选项 | 类型 | 默认 | 说明 |
|---|---|---|---|
baseUrl | string | "https://api.lambdadb.ai" | API 基础 URL( 无跟踪斜线) . |
projectName | string | "playground" | 项目名称(路径段). |
serverURL | string | —— 说 | 全垒打 URL( 覆盖 BaseUrl + 工程Name) . |
projectHost | string | —— 说 | 遗产:URL的主机路径(例如. api.lambdadb.ai/projects/my-project) (中文(简体) ). |
使用 BaseUrl 和工程Name (推荐)
import { LambdaDBClient } from "@functional-systems/lambdadb";
const client = new LambdaDBClient({
projectApiKey: "<YOUR_PROJECT_API_KEY>",
baseUrl: "https://api.lambdadb.ai",
projectName: "my-project",
});
const result = await client.listCollections();
覆盖完整的服务器 URL
要将基准 URL 设置在一个去, 使用 serverURL数字 :
import { LambdaDBClient } from "@functional-systems/lambdadb";
const client = new LambdaDBClient({
serverURL: "https://api.lambdadb.ai/projects/my-project",
projectApiKey: "<YOUR_PROJECT_API_KEY>",
});
const result = await client.listCollections();
自定义 HTTP 客户端
TypeScript SDK 使用一个 HTTPClient 将本地人包裹起来
获取 API这个
客户端是薄薄的包装 fetch 并且提供连接钩子的能力
围绕可用于修改请求或处理的请求生命周期
错误和反应.
这个 HTTPClient 构造器使用可选 fetcher 参数可以是
用于整合第三方 HTTP 客户端或用于编写测试以嘲弄
hTTP 客户端并输入固定设备.
以下示例说明如何使用 "beforeRequest" 要添加的钩子
自定义标题和请求的超时及如何使用 "requestError" 钩子
记录错误 :
import { LambdaDBClient } from "@functional-systems/lambdadb";
import { HTTPClient } from "@functional-systems/lambdadb/lib/http";
const httpClient = new HTTPClient({
// fetcher takes a function that has the same signature as native `fetch`.
fetcher: (request) => {
return fetch(request);
}
});
httpClient.addHook("beforeRequest", (request) => {
const nextRequest = new Request(request, {
signal: request.signal || AbortSignal.timeout(5000)
});
nextRequest.headers.set("x-custom-header", "custom value");
return nextRequest;
});
httpClient.addHook("requestError", (error, request) => {
console.group("Request Error");
console.log("Reason:", `${error}`);
console.log("Endpoint:", `${request.method} ${request.url}`);
console.groupEnd();
});
const client = new LambdaDBClient({ httpClient, projectApiKey: "<YOUR_PROJECT_API_KEY>" });
单独通过一个 transferClient 用于预签名上传和线外结果
下载。 API 认证和 API 唯一的信头永远不会复制到此项
运输。 待命 signal 财务报告和审定财务报表 timeoutMs 仍然适用于转移请求.
调试
您可以为 SDK 请求和响应设置 SDK 以发送调试日志 .
你可以通过一个匹配的日志 console'作为 SDK 选项的接口.
[尖叫声] 注意调试日志会揭示一些秘密, 如标题中的 API 令牌, 打印到控制台或文件中的日志信息 。 建议只在本地开发期间使用这一特征,而不能用于生产.
import { LambdaDBClient } from "@functional-systems/lambdadb";
const client = new LambdaDBClient({ debugLogger: console, projectApiKey: "<YOUR_PROJECT_API_KEY>" });
通过设置环境变量也可以启用默认调试日志 LAMBDADB_DEBUG 改为 true 或者说 1 (大小写不敏感). 任何其他价值,包括 false 财务报告和审定财务报表 0,让它残废.
发展
成熟度
这个SDK是在β中,在版本之间可能会有断裂的更改,而没有主要的版本更新. 因此,我们建议把使用定在特定的软件包版本,除非你有意寻找最新的版本.
捐款
我们欢迎各方的贡献。 推荐的API在 src/client.ts (LambdaDBClient,收集范围. 其余部分 src/ (funcs, models, lib) 手动维护; 见 文件/OPENAPI UPD.md 用于应用 API 更改。 随便开个公关或者问题.