メインコンテンツまでスキップ

UserCustomDataService

カスタムデータ定義・カスタムデータにアクセスするためのサービス

備考

baseServiceを使用することでカスタムデータ定義ごとにインスタンスを作成することができます。※ CustomDataServiceFactoryを参照

Extends

  • UserCustomDataBaseService

Methods

createCustomData()

createCustomData(data): Promise<string>;

カスタムデータを作成する

Parameters

ParameterTypeDescription
dataCustomDataEntity作成するカスタムデータ

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

ParameterTypeDescription
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'))
ヒント

大量のカスタムデータを取得する場合は、ページネーション(orderBylimitstartAfter)を使用することを推奨します。

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

ParameterTypeDescription
docIdstring削除するカスタムデータのドキュメントID

Returns

Promise<void>

Example

await service.removeCustomData(docId)

Overrides

UserCustomDataBaseService.removeCustomData

updateCustomData()

updateCustomData(docId, data): Promise<void>;

カスタムデータを更新する

Parameters

ParameterTypeDescription
docIdstringカスタムデータのドキュメントID
dataPartial<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