Skip to content

REST API

由于 Beszel 基于 PocketBase 构建,您可以使用 PocketBase Web API客户端 SDK 来读取或更新 Beszel 自身之外的数据。

基本示例

此示例使用 PocketBase JS SDKsystems 集合中读取数据。

typescript
import PocketBase from 'pocketbase'

const pb = new PocketBase('http://localhost:8090')

// 作为普通用户进行身份验证
const userData = await pb.collection('users').authWithPassword('[email protected]', '123456')

// 列出并过滤系统记录
const systems = await pb.collection('systems').getList(1, 20, {
	filter: 'status = "up" && created > "2024-06-01 10:00:00"',
})

console.log(systems)

将用户添加到系统

此示例将特定用户添加到特定系统。

ts
import PocketBase from 'pocketbase'

const pb = new PocketBase('http://localhost:8090')

// 我们将添加到系统的用户
const userEmails = ['[email protected]', '[email protected]']
// 我们将向其添加用户的系统名称
const systemNames = ['localhost', 'kagemusha']

// 作为管理员进行身份验证
await pb.admins.authWithPassword(process.env.EMAIL, process.env.PASSWORD)

// 获取用户 ID
const userIds = await pb
	.collection('users')
	.getFullList({
		fields: 'id',
		filter: `email='${userEmails.join(`'||email='`)}'`,
	})
	.then((records) => records.map(({ id }) => id))

// 获取系统 ID 和当前用户
const systemsData = await pb.collection('systems').getFullList({
	fields: 'id,users',
	filter: `name='${systemNames.join(`'||name='`)}'`,
})

// 循环遍历系统并将用户添加到其中
for (const system of systemsData) {
	const updatedUsers = Array.from(new Set([...system.users, ...userIds]))
	await pb.collection('systems').update(system.id, { users: updatedUsers })
}

基于 MIT 许可发布