[ PROMPT_NODE_25926 ]
PocketBase SDK
[ SKILL_DOCUMENTATION ]
# PocketBase JavaScript SDK
## 安装与设置
bash
npm install pocketbase
# 或
yarn add pocketbase
# 或
js
import PocketBase from 'pocketbase'
const pb = new PocketBase('http://127.0.0.1:8090')
## CRUD 操作
### 列出记录
js
const records = await pb.collection('posts').getList(1, 20, {
filter: 'status = "active" && created > "2024-01-01"',
sort: '-created,title',
expand: 'author,tags',
fields: 'id,title,author,created', // 部分响应
skipTotal: true, // 跳过 COUNT 查询以获得更好的性能
})
// records.page, records.perPage, records.totalItems, records.totalPages, records.items
### 获取完整列表(自动分页)
js
const allRecords = await pb.collection('posts').getFullList({
filter: 'status = "active"',
sort: '-created',
batch: 200, // 每次请求的记录数(默认:200)
})
### 查看单条记录
js
const record = await pb.collection('posts').getOne('RECORD_ID', {
expand: 'author',
})
### 获取第一条匹配记录
js
const record = await pb.collection('posts').getFirstListItem('slug = "my-post"', {
expand: 'author',
})
### 创建记录
js
const record = await pb.collection('posts').create({
title: 'My Post',
body: 'Content here',
author: 'USER_ID',
status: 'draft',
})
### 更新记录
js
const record = await pb.collection('posts').update('RECORD_ID', {
title: 'Updated Title',
status: 'published',
})
### 删除记录
js
await pb.collection('posts').delete('RECORD_ID')
## 查询参数
### 过滤语法
与 API 规则过滤语法相同。常见模式:
js
// 相等
filter: 'status = "active"'
// 包含 (LIKE)
filter: 'title ~ "hello"'
// 多关系包含
filter: 'tags ?= "TAG_ID"'
// 日期比较
filter: 'created > "2024-01-01 00:00:00"'
// 相对日期
filter: 'created > @now - 7d'
// 逻辑运算符
filter: 'status = "active" && author = "USER_ID"'
filter: '(type = "a" || type = "b") && active = true'
// 空值检查
filter: 'parent = null'
filter: 'parent != null'
### 排序语法
js
sort: '-created' // 按创建时间降序
sort: 'title' // 按标题升序
sort: '-created,title' // 多字段排序
sort: '@random' // 随机顺序
### 展开关系
js
expand: 'author' // 单个关系