数据表
typescript
import {
createDirectus,
readItem,
readItems,
rest,
createItem,
updateItem,
deleteItem
} from '@directus/sdk';
const client = createDirectus('http://xxx').with(rest())
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
查询项目
查询单个
typescript
await client.request(
readItem('GoodsCats', 1) // 这里传入的是 id
)
1
2
3
2
3
查询所有
typescript
await client.request(
readItems('GoodsCats')
)
1
2
3
2
3
查询特定字段
typescript
await client.request(
readItems('GoodsCats', {
fields: ['id', 'title', 'sort']
})
)
1
2
3
4
5
2
3
4
5
查询所有字段
或者不传也可以
typescript
await client.request(
readItems('GoodsCats', {
fields: ['*']
})
)
1
2
3
4
5
2
3
4
5
查询嵌套字段
typescript
await client.request(
readItems('GoodsCats', {
fields: ['id','title', {parent_id:['id', 'title']}]
})
)
1
2
3
4
5
2
3
4
5
自定义端点
注意这里的括号。
typescript
await client.request((() => ({
path:'',
method:'GET'
})))
1
2
3
4
2
3
4
typescript
interface RequestOptions {
path: string;
method?: HttpMethod;
params?: Record<string, any>;
headers?: Record<string, string>;
body?: string | FormData;
onRequest?: RequestTransformer;
onResponse?: ResponseTransformer;
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
新增项目
WARNING
需要在后台生成 token
token 可后台生成: 8HieiqRJuYXA9A_Q7YIO4gGrF06tU5EG,token 相关
新增单个
- 新增单个传入 对象
- 成功返回数据
- 失败直接报错
typescript
// 需要配置 token
const client = createDirectus('http://10.10.10.10:8055')
.with(rest())
.with(staticToken('kz73JxxwwiCNq9O5AVLaenpnf9NkXvYw')
// 操作
const cat: {
title: string,
summarize?: string | null
sort?: number,
parent_id?: number | null
} = {
title: '这里是标题'
};
await client.request(createItem('GoodsCats', cat))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
新增多个
- 新增多个传入 数组
- 成功返回新增的数组
- 失败直接报错
注意
后端使用了事务,也就是如果有一个新增失败,则都不会新增
typescript
const cats:CAT[] = [{title:'t1'},{title:'t2'}];
await client.request(createItem('GoodsCats', cats))
1
2
3
2
3
更新项目
更新单个
- 成功返回修改后的数据
- 失败直接报错
updateItem(collection_name, item_id, partial_item_object)
typescript
await client.request(updateItem ('GoodsCats', 4, {title:'王二麻子'}))
1
更新多个
- 成功返回修改后的所有数据
- 失败直接报错
注意
如果后台没有这个字段, 更新也不会报错。
updateItems(collection_name, item_id_array, partial_item_object)
typescript
await client.request(
updateItems('GoodsCats', [1, 2, 3, 4, 5], { sort: 5 })
)
1
2
3
2
3
删除项目
删除单个
- 成功什么也不返回
- 不成功会报错
注意!
如果找不到
id
同什么也不返回。如果后端有关联设置,会根据后端的关联设置进行删除
- 如果禁止删除,则删除时会报错。具体报错需要查看
err.errors
- 如果禁止删除,则删除时会报错。具体报错需要查看
deleteItem(collection_name, item_id)
await client.request(
deleteItem('GoodsCats', 1)
)
1
2
3
2
3
删除多个
- 成功什么也不返回,如果找不到
id
同什么也不返回 - 不成功会报错
deleteItems(collection_name, query_object)
typescript
await client.request(
deleteItems('GoodsCats', [9, 10])
)
1
2
3
2
3
typescript
await client.request(
deleteItems('GoodsCats', {
filter: {
_eq: {
sort: 5
}
}
})
)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9