学士客户端
官方 Elastic.io 对象存储客户端.
使用量
这个图书馆向你们推荐两个客户: ObjectStorage 打开 ObjectStorageWrapper。 。 。 .
使用 ObjectStorageWrapper 以数据操作 string, (中文(简体) ), number, (中文(简体) ), object, (中文(简体) ), array
使用 ObjectStorage 用于操作附件(也可用于与 ObjectStorageWrapper(中文(简体) )
注意: 所有代码片段用 Typescript 写
环境变量
请求( MA) - 指定在服务器或连接出错时尝试重试失败请求的次数.
默认值:3. 最小值:0. 最大值: 4. 如果配置的值超出限制,则会使用默认值.
请求不适用 - 在请求时间到期前指定持续时间以毫秒为单位。 如果请求超过这一期限,则中止.
默认值: 15000(15秒). 最小值:500(0.5秒). 最大值: 120000 (20分). 如果配置的值超出限制,则会使用默认值.
创建客户端
import { ObjectStorage, ObjectStorageWrapper } from '@elastic.io/maester-client';
const objectStorageWrapper = new ObjectStorageWrapper(this);
const objectStorage = new ObjectStorage(creds);
对象StorageWrapper CRUD 操作
创建对象
该方法的签名如下:
async createObject(data: object, queryHeaders?: Header[], metaHeaders?: Header[], ttl?: number)
地点
- 数据 - 要创建的任何数据. 需求
- 查询标题 - 对象数组
{ key: string, value: string },当前最大值 - 5项。 何处key(必须是小写) - 可搜索的字段名(见下文Get objects by query parameters如果指定,则整个阵列必须具有独有性value还必须具体说明;value- 可搜索的字段值,如果指定 --key还必须具体说明. 可选 - 元页眉 - 对象数组
{ key: string, value: string }时key(必须是小写) - 元字段名,必须对整个数组独有,如果指定的话 -value还必须具体说明;value- 元字段值,如果指定 --key还必须具体说明. 可选 - ttl - 可配置对象活活的时间,秒. 可选
const obj = await objectStorageWrapper.createObject(data);
const obj = await objectStorageWrapper.createObject(data, [], [], 100000);
const obj = await objectStorageWrapper.createObject(
data,
[{key: 'somequeriablefieldkey', value: 'somequeriablefieldvalue'}],
[{key: 'somemetakey', value: 'somemetavalue'}],
60000
);
const obj = await objectStorageWrapper.createObject(
data,
[{key: 'anotherqueriablefieldkey', value: 'anotherqueriablefieldvalue'}, {key: 'anotherqueriablefieldkey2', value: 'anotherqueriablefieldvalue2'}],
[{key: 'somemetakey', value: 'somemetavalue'}],
60000
);
读取操作
通过 ID 获取对象
返回 JSON 对象。 该方法的签名如下:
async lookupObjectById(id: string)
地点
- id - 天体内部的学士ID来查看. 例如"76380cae-aee3-457a-9029-d971f61e3731". 需求
const obj = await objectStorageWrapper.lookupObjectById(id);
通过查询参数获取对象
该方法的签名如下:
async lookupObjectsByQueryParameters(headers: Header[])
地点
- 页眉 - 对象数组
{ key: string, value: string },当前最大值 - 5项。 何处key(必须是小写) - 可搜索的字段名,必须对整个数组独有,如果指定的话 -value还必须具体说明;value- 可搜索的字段值,如果指定 --key还必须具体说明. 需求
如果您创建了一个带有可填充头的对象, 内部看起来是这样的:
x-query-somequeriablefieldkey: somequeriablefieldvalue
x-query-anotherqueriablefieldkey: anotherqueriablefieldvalue
其中"x-query-"是一个默认的前缀.
使用 REST API 学士,您可以通过 :
/objects?query[somequeriablefieldkey]=somequeriablefieldvalue&query[anotherqueriablefieldkey]=anotherqueriablefieldvalue
使用图书馆:
const objects = await objectStorageWrapper.lookupObjectsByQueryParameters([
{ key: 'somequeriablefieldkey', value: 'somequeriablefieldvalue' },
{ key: 'anotherqueriablefieldkey', value: 'anotherqueriablefieldvalue' }
]);
方法返回一系列项目。 如果找不到对象或包含对象, 它要么是空的
更新对象
该方法的签名如下:
async updateObject(id: string, data: object, queryHeaders?: Header[], metaHeaders?: Header[])
地点
- id - 天体的内部ID学士来更新. 例如"76380cae-aee3-457a-9029-d971f61e3731". 需求
- 数据 - 要更新的对象. 需求
- 查询标题 - 对象数组
{ key: string, value: string },当前最大值 - 5项。 何处key(必须是小写) - 可搜索的字段名(见下文Get objects by query parameters如果指定,则整个阵列必须具有独有性value还必须具体说明;value- 可搜索的字段值,如果指定 --key还必须具体说明。 注意:查询头可以添加到已存在的对象中,也可以修改,但不能被删除. 可选 - 元页眉 - 对象数组
{ key: string, value: string }时key(必须是小写) - 元字段名,必须对整个数组独有,如果指定的话 -value还必须具体说明;value- 元字段值,如果指定 --key还必须具体说明。 注:元头可以添加到已存在的对象中,也可以被修改,但不能被删除. 可选
const obj = await objectStorageWrapper.updateObject(id, data);
const obj = await objectStorageWrapper.updateObject(
id,
data,
[{ key: 'somequeriablefieldkey', value: 'somequeriablefieldvalue' }, { key: 'anotherqueriablefieldkey', value: 'anotherqueriablefieldvalue' }]
);
const obj = await objectStorageWrapper.updateObject(
id,
data,
[{key: 'anotherqueriablefieldkey', value: 'anotherqueriablefieldvalue'}, {key: 'anotherqueriablefieldkey2', value: 'anotherqueriablefieldvalue2'}],
[{key: 'somemetakey', value: 'somemetavalue'}]
);
删除操作
用 ID 删除对象
该方法的签名如下:
async deleteObjectById(id: string)
地点
- id - 要删除的对象的学士内部id. 例如"76380cae-aee3-457a-9029-d971f61e3731". 需求
const obj = await objectStorageWrapper.deleteObjectById(id);
通过查询参数删除对象
该方法的签名如下:
async deleteObjectsByQueryParameters(headers: Header[])
地点
- 页眉 - 对象数组
{ key: string, value: string },当前最大值 - 5项。 何处key(必须是小写) - 可搜索的字段名,必须对整个数组独有,如果指定的话 -value还必须具体说明;value- 可搜索的字段值,如果指定 --key还必须具体说明. 需求
const obj = await objectStorageWrapper.deleteObjectsByQueryParameters([{key: 'somequeriablefieldkey', value: 'somequeriablefieldvalue'}]);
对象Storage CRUD 操作
创建对象
该方法的签名如下:
async add(dataOrFunc: uploadData | (() => Promise<Readable>), reqWithBodyOptions?: ReqWithBodyOptions)
地点
- 数据OrFunc - async函数返回流或任何数据(除"未定义").
- req with Body 选项。 。 。 .
const obj = await objectStorage.add(data, { headers: {'x-query-somequeriablefieldkey': 'somequeriablefieldvalue'} });
const getAttachAsStream = async () => (await axios.get('https://img.jpg', { responseType: 'stream' })).data;
const obj = await objectStorage.add(getAttachAsStream, { retryOptions: { retriesCount: 5, requestTimeout: 60000 } });
);
读取操作
通过 ID 获取对象
该方法的签名如下:
async getOne(objectId: string, reqOptions: ReqOptions = {})
地点
- id - 天体内部的学士ID来查看. 例如"76380cae-aee3-457a-9029-d971f61e3731".
- req 选项。 。 。 .
const { data, headers } = await objectStorage.getOne(id);
const { data: stream, headers } = await objectStorage.getOne(id, { responseType: 'stream'});
通过查询参数获取对象
该方法的签名如下:
async getAllByParams(params: object, reqOptions: ReqOptions = {})
地点
- params - 查询参数的对象,当前最大值 - 5项.
- req 选项。 。 。 .
实例:
const obj = await objectStorage.getAllByParams({ 'query[field]': 'value' });
方法返回一系列项目。 如果找不到对象或包含对象, 它要么是空的
更新对象
该方法的签名如下:
async update(objectId: string, dataOrFunc: uploadData | (() => Promise<Readable>), reqWithBodyOptions?: ReqWithBodyOptions)
地点
- objectId - 要更新的对象的ID.
- 数据OrFunc - async函数返回流或任何数据(除"未定义").
- req with Body 选项
const obj = await objectStorage.update(data, { headers: {'x-query-somequeriablefieldkey': 'somequeriablefieldvalue'} });
const getAttachAsStream = async () => (await axios.get('https://img.jpg', { responseType: 'stream' })).data;
const obj = await objectStorage.update(getAttachAsStream);
);
删除操作
用 ID 删除对象
该方法的签名如下:
async deleteOne(objectId: string, reqOptions: ReqOptions = {})
地点
- id - 要删除的对象的学士内部id. 例如"76380cae-aee3-457a-9029-d971f61e3731".
- req 选项。 。 。 .
const obj = await objectStorage.deleteOne(id);
const obj = await objectStorage.deleteOne(id, { retryOptions: { retriesCount: 5, requestTimeout: 60000 } });
通过查询参数删除对象
该方法的签名如下:
async deleteAllByParams(params: object, reqOptions: ReqOptions = {})
地点
- params - 查询参数的对象,当前最大值 - 5项.
- req 选项。 。 。 .
const obj = await objectStorage.deleteAllByParams({ 'query[field]': 'value' });
其他方法
使用方法
该方法的签名如下:
async use(forward: TransformMiddleware, reverse: TransformMiddleware)
地点
- 前进 - 转换要使用的中间软件
Create财务报告和审定财务报表Update对象操作( e)add, (中文(简体) ),update方法问题. - 倒转 - 将中间软件转换为
Get对象操作( e)getOne, (中文(简体) ),getAllByParams方法问题.
获取页眉方法
该方法的签名如下:
async getHeaders(objectId: string, reqOptions: ReqOptions = {})
地点
- 前进 - 转换要使用的中间软件
Create财务报告和审定财务报表Update对象操作( e)add, (中文(简体) ),update方法问题. - 倒转 - 将中间软件转换为
Get对象操作( e)getOne, (中文(简体) ),getAllByParams方法问题.
处理错误
库所抛出的所有错误都是 ObjectStorageClientError 课。 检查导出 Errors a 财产
列出所有错误类别及其属性.
限制
- 两者
ObjectStorage财务报告和审定财务报表ObjectStorageWrapper无法处理undefined作为上调值的值。 还值undefined将转换为null,例如[1, 'str', undefined, null, { d: 2 }]将保存为[1, 'str', null, null, { d: 2 }] - 一旦对象被创建为自定义的“ 内容类型 ” , 请注意“ 内容类型 ” 可以随此对象的下一次更新请求自动更改 。 为了避免在下次更新请求中再次提供自定义“ 内容类型 ” .
例如,如果你创造了这样的反对const objectId = await objectStorage.add({ a: 2 }, { headers: { 'content-type': 'some-type' } })- 对象将用'content-type': 'some-type'。但如果您要更新此对象而不通过相同的自定义“ 内容类型 ” (await objectStorage.update(objectId, { a: 3 })) - 对象“ 内容类型” 将自动计算, 在此情况下将设定为“ 应用程序/ json ” .