UserCustomDataService
カスタムデータ定義・カスタムデータにアクセスするためのサービス
備考
※ baseServiceを使用することでカスタムデータ定義ごとにインスタンスを作成することができます。※ CustomDataServiceFactoryを参照
Extends
UserCustomDataBaseService
Methods
createCustomData()
createCustomData(data): Promise<string>;
カスタムデータを作成する
Parameters
| Parameter | Type | Description |
|---|---|---|
data | CustomDataEntity | 作成するカスタムデータ |
Returns
Promise<string>
Example
const personData = {
name: 'John',
age: 30,
email: 'john@example.com',
}
await service.createCustomData(personData)
備考
登録するカスタムデータのカスタムデータ定義の項目のうち、必須項目はすべて引数に含めるようにしてください。
また登録する際はカスタムデータ定義と同じデータタイプで登録するようにしてください。
Overrides
UserCustomDataBaseService.createCustomData
getCustomDataByQuery()
getCustomDataByQuery(queryFn): Promise<WithMetaFields<CustomDataEntity>[]>;
カスタムデータを取得する
Parameters
| Parameter | Type | Description |
|---|---|---|
queryFn | (qb) => QueryBuilder<CustomDataEntity, never> | クエリ関数 |
Returns
Promise<WithMetaFields<CustomDataEntity>[]>
カスタムデータの配列
Example
// 例としてカスタムデータ定義名からカスタムデータサービスを作成する
// ※ペット手当マスタというカスタムデータ定義名のカスタムデータを取得する
const service = await baseService.createCustomDataServiceByDefinitionName('ペット手当マスタ')
// amountが1000のカスタムデータを取得する
const customData = await service.getCustomDataByQuery(qb => qb.where('amount', '==', 1000))
// amountが2000以上のカスタムデータを取得する
const customData = await service.getCustomDataByQuery(qb => qb.where('amount', '>=', 2000))
// petTypeがdogまたはcatのカスタムデータを取得する
const customData = await service.getCustomDataByQuery(qb => qb.where('petType', 'in', ['dog', 'cat']))
// petTypeがdogでもcatでもないカスタムデータを取得する
const customData = await service.getCustomDataByQuery(qb => qb.where('petType', 'not-in', ['dog', 'cat']))
備考
複数の条件を指定したい場合は、引数に条件を追加してください。
// amountが1000かつpetTypeがdogのカスタムデータを取得する
const customData = await service.getCustomDataByQuery(qb => qb.where('amount', '==', 1000).where('petType', '==', 'dog'))
警告
比較演算子を含む複合クエリは使用できません。
詳細はこちらをご参照ください。
// NG例
const customData = await service.getCustomDataByQuery(qb => qb.where('amount', '>=', 1000).where('petType', '==', 'dog'))
ヒント
大量のカスタムデータを取得する場合は、ページネーション(orderBy・limit・startAfter)を使用することを推奨します。
const PAGE_SIZE = 100
let last = null
while (true) {
const page = await service.getCustomDataByQuery((qb) =>
last
? qb.orderBy('docId', 'desc').startAfter(last.docId).limit(PAGE_SIZE)
: qb.orderBy('docId', 'desc').limit(PAGE_SIZE)
)
if (page.length < PAGE_SIZE) break
last = page[page.length - 1]
}
Inherited from
UserCustomDataBaseService.getCustomDataByQuery
getCustomDataDefinition()
getCustomDataDefinition(): WithMetaFields<CustomDataDefintionEntity>;
Returns
WithMetaFields<CustomDataDefintionEntity>
Inherited from
UserCustomDataBaseService.getCustomDataDefinition
removeCustomData()
removeCustomData(docId): Promise<void>;
カスタムデータを削除する
Parameters
| Parameter | Type | Description |
|---|---|---|
docId | string | 削除するカスタムデータのドキュメントID |
Returns
Promise<void>
Example
await service.removeCustomData(docId)
Overrides
UserCustomDataBaseService.removeCustomData
updateCustomData()
updateCustomData(docId, data): Promise<void>;
カスタムデータを更新する
Parameters
| Parameter | Type | Description |
|---|---|---|
docId | string | カスタムデータのドキュメントID |
data | Partial<CustomDataEntity> | 更新後のカスタムデータ |
Returns
Promise<void>
Example
// 例としてカスタムデータで登録されている従業員の年齢を更新する
const personData = {
docId: '1',
name: 'John',
age: 30,
email: 'john@example.com',
}
const updatedData = {
age: 31,
}
await service.updateCustomData(personData.docId, updatedData)
Overrides
UserCustomDataBaseService.updateCustomData