內建模組 - AWS AppSync

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

內建模組

模組是APPSYNC_JS執行期的一部分,並提供公用程式以協助寫入 JavaScript 解析器和函數。

DynamoDB 模組函數

DynamoDB 模組函數可在與 DynamoDB 資料來源互動時提供增強的體驗。您可以使用 函數向 DynamoDB 資料來源提出請求,而無需新增類型映射。

使用 匯入模組@aws-appsync/utils/dynamodb

// Modules are imported using @aws-appsync/utils/dynamodb import * as ddb from '@aws-appsync/utils/dynamodb';

函數

get<T>(payload: GetInput): DynamoDBGetItemRequest
提示

如需 的相關資訊輸入,請參閱 GetInput。

產生DynamoDBGetItemRequest物件以向 DynamoDB 提出GetItem請求。

import { get } from '@aws-appsync/utils/dynamodb'; export function request(ctx) { return get({ key: { id: ctx.args.id } }); }
put<T>(payload): DynamoDBPutItemRequest

產生DynamoDBPutItemRequest物件以向 DynamoDB 提出PutItem請求。

import * as ddb from '@aws-appsync/utils/dynamodb' export function request(ctx) { return ddb.put({ key: { id: util.autoId() }, item: ctx.args }); }
remove<T>(payload): DynamoDBDeleteItemRequest

產生DynamoDBDeleteItemRequest物件以向 DynamoDB 提出DeleteItem請求。

import * as ddb from '@aws-appsync/utils/dynamodb'; export function request(ctx) { return ddb.remove({ key: { id: ctx.args.id } }); }
scan<T>(payload): DynamoDBScanRequest

產生 DynamoDBScanRequest以向 DynamoDB 提出掃描請求。

import * as ddb from '@aws-appsync/utils/dynamodb'; export function request(ctx) { const { limit = 10, nextToken } = ctx.args; return ddb.scan({ limit, nextToken }); }
sync<T>(payload): DynamoDBSyncRequest

產生DynamoDBSyncRequest物件以發出同步請求。請求只會接收自上次查詢以來變更的資料 (變動更新)。只能對版本化 DynamoDB 資料來源提出請求。

import * as ddb from '@aws-appsync/utils/dynamodb'; export function request(ctx) { const { limit = 10, nextToken, lastSync } = ctx.args; return ddb.sync({ limit, nextToken, lastSync }); }
update<T>(payload): DynamoDBUpdateItemRequest

產生DynamoDBUpdateItemRequest物件以向 DynamoDB 提出UpdateItem請求。

作業

操作協助程式可讓您在更新期間對部分資料採取特定動作。若要開始使用,operations請從 匯入@aws-appsync/utils/dynamodb

// Modules are imported using operations import {operations} from '@aws-appsync/utils/dynamodb';
add<T>(payload)

在更新 DynamoDB 時新增屬性項目的協助程式函數。

範例

若要使用 ID 值將地址 (街道、城市和郵遞區號) 新增至現有的 DynamoDB 項目:

import { update, operations } from '@aws-appsync/utils/dynamodb'; export function request(ctx) { const updateObj = { address: operations.add({ street1: '123 Main St', city: 'New York', zip: '10001', }), }; return update({ key: { id: 1 }, update: updateObj }); }
append <T>(payload)

將承載附加至 DynamoDB 中現有清單的協助程式函數。

範例

若要在更新期間將新增的朋友 IDs(newFriendIds) 附加至現有的朋友清單 (friendsIds):

import { update, operations } from '@aws-appsync/utils/dynamodb'; export function request(ctx) { const newFriendIds = [101, 104, 111]; const updateObj = { friendsIds: operations.append(newFriendIds), }; return update({ key: { id: 1 }, update: updateObj }); }
decrement (by?)

在更新 DynamoDB 時減少項目中現有屬性值的協助程式函數。

範例

若要將朋友計數器 (friendsCount) 減少 10:

import { update, operations } from '@aws-appsync/utils/dynamodb'; export function request(ctx) { const updateObj = { friendsCount: operations.decrement(10), }; return update({ key: { id: 1 }, update: updateObj }); }
increment (by?)

在更新 DynamoDB 時增加項目中現有屬性值的協助程式函數。

範例

若要將朋友計數器 (friendsCount) 增加 10:

import { update, operations } from '@aws-appsync/utils/dynamodb'; export function request(ctx) { const updateObj = { friendsCount: operations.increment(10), }; return update({ key: { id: 1 }, update: updateObj }); }
prepend <T>(payload)

附加至 DynamoDB 中現有清單的協助程式函數。

範例

若要在更新期間將新增的朋友 IDs(newFriendIds) 預先載入現有的朋友清單 (friendsIds):

import { update, operations } from '@aws-appsync/utils/dynamodb'; export function request(ctx) { const newFriendIds = [101, 104, 111]; const updateObj = { friendsIds: operations.prepend(newFriendIds), }; return update({ key: { id: 1 }, update: updateObj }); }
replace <T>(payload)

在 DynamoDB 中更新項目時取代現有屬性的協助程式函數。當您想要更新屬性中的整個物件或子物件時,這非常有用,而不只是承載中的金鑰。

範例

若要取代info物件中的地址 (街道、城市和郵遞區號):

import { update, operations } from '@aws-appsync/utils/dynamodb'; export function request(ctx) { const updateObj = { info: { address: operations.replace({ street1: '123 Main St', city: 'New York', zip: '10001', }), }, }; return update({ key: { id: 1 }, update: updateObj }); }
updateListItem <T>(payload, index)

取代清單中項目的協助程式函數。

範例

在更新 (newFriendIds) 的範圍中,此範例用於updateListItem更新清單中第二個項目 (索引:1,新 ID:102) 和第三個項目 (索引:2,新 ID:112) 的 ID 值 ()friendsIds

import { update, operations as ops } from '@aws-appsync/utils/dynamodb'; export function request(ctx) { const newFriendIds = [ ops.updateListItem('102', 1), ops.updateListItem('112', 2) ]; const updateObj = { friendsIds: newFriendIds }; return update({ key: { id: 1 }, update: updateObj }); }

輸入

Type GetInput<T>
GetInput<T>: { consistentRead?: boolean; key: DynamoDBKey<T>; }

類型宣告

  • consistentRead?: boolean (選用)

    選擇性布林值,用於指定是否要使用 DynamoDB 執行強烈一致的讀取。

  • key: DynamoDBKey<T> (必要)

    在 DynamoDB 中指定項目索引鍵的必要參數。DynamoDB 項目可能具有單一雜湊金鑰或雜湊和排序金鑰。

Type PutInput<T>
PutInput<T>: { _version?: number; condition?: DynamoDBFilterObject<T> | null; customPartitionKey?: string; item: Partial<T>; key: DynamoDBKey<T>; populateIndexFields?: boolean; }

類型宣告

  • _version?: number (選用)

  • condition?: DynamoDBFilterObject<T> | null (選用)

    當您將物件放入 DynamoDB 資料表時,您可以選擇性地指定條件式表達式,以根據執行操作之前在 DynamoDB 中已存在的物件狀態來控制請求是否成功。

  • customPartitionKey?: string (選用)

    啟用時,此字串值會修改啟用版本控制時,delta 同步表使用的 ds_skds_pk 記錄格式。啟用時,也會啟用populateIndexFields項目的處理。

  • item: Partial<T> (必要)

    要放入 DynamoDB 的項目的其他屬性。

  • key: DynamoDBKey<T> (必要)

    必要參數,指定 DynamoDB 中要執行放置的項目索引鍵。DynamoDB 項目可能具有單一雜湊金鑰或雜湊和排序金鑰。

  • populateIndexFields?: boolean (選用)

    布林值,當 與 啟用時,會為 Delta 同步表中的每個記錄customPartitionKey建立新的項目,特別是在 gsi_ds_pkgsi_ds_sk欄中。如需詳細資訊,請參閱 AWS AppSync 開發人員指南 中的衝突偵測和同步

Type QueryInput<T>
QueryInput<T>: ScanInput<T> & { query: DynamoDBKeyCondition<Required<T>>; }

類型宣告

  • query: DynamoDBKeyCondition<Required<T>> (必要)

    指定描述要查詢之項目的金鑰條件。對於指定的索引,分割區索引鍵的條件應該是等式,以及排序索引鍵是比較或 beginsWith(當它是字串時)。分割區和排序金鑰僅支援數字和字串類型。

    範例

    使用下列User類型:

    type User = { id: string; name: string; age: number; isVerified: boolean; friendsIds: string[] }

    查詢只能包含下列欄位:idnameage

    const query: QueryInput<User> = { name: { eq: 'John' }, age: { gt: 20 }, }
Type RemoveInput<T>
RemoveInput<T>: { _version?: number; condition?: DynamoDBFilterObject<T>; customPartitionKey?: string; key: DynamoDBKey<T>; populateIndexFields?: boolean; }

類型宣告

  • _version?: number (選用)

  • condition?: DynamoDBFilterObject<T> (選用)

    當您在 DynamoDB 中移除物件時,您可以選擇指定條件式表達式,以根據在執行操作之前在 DynamoDB 中已存在的物件狀態來控制請求是否成功。

    範例

    下列範例是包含條件的DeleteItem表達式,只有在文件的擁有者與提出請求的使用者相符時,才會允許操作成功。

    type Task = { id: string; title: string; description: string; owner: string; isComplete: boolean; } const condition: DynamoDBFilterObject<Task> = { owner: { eq: 'XXXXXXXXXXXXXXXX' }, } remove<Task>({ key: { id: 'XXXXXXXXXXXXXXXX', }, condition, });
  • customPartitionKey?: string (選用)

    啟用時,該customPartitionKey值會修改啟用版本控制時,delta 同步表使用的 ds_skds_pk 記錄格式。啟用時,也會啟用populateIndexFields項目的處理。

  • key: DynamoDBKey<T> (必要)

    必要參數,指定 DynamoDB 中要移除之項目的索引鍵。DynamoDB 項目可能具有單一雜湊金鑰或雜湊和排序金鑰。

    範例

    如果 User僅具有使用者 的雜湊金鑰id,則該金鑰看起來會如下所示:

    type User = { id: number name: string age: number isVerified: boolean } const key: DynamoDBKey<User> = { id: 1, }

    如果資料表使用者具有雜湊金鑰 (id) 和排序金鑰 (name),則金鑰看起來會如下所示:

    type User = { id: number name: string age: number isVerified: boolean friendsIds: string[] } const key: DynamoDBKey<User> = { id: 1, name: 'XXXXXXXXXX', }
  • populateIndexFields?: boolean (選用)

    布林值,當 與 啟用時,會為 Delta 同步表中的每個記錄customPartitionKey建立新的項目,特別是在 gsi_ds_pkgsi_ds_sk欄中。

Type ScanInput<T>
ScanInput<T>: { consistentRead?: boolean | null; filter?: DynamoDBFilterObject<T> | null; index?: string | null; limit?: number | null; nextToken?: string | null; scanIndexForward?: boolean | null; segment?: number; select?: DynamoDBSelectAttributes; totalSegments?: number; }

類型宣告

  • consistentRead?: boolean | null (選用)

    選用布林值,用於在查詢 DynamoDB 時指示一致的讀取。預設值為 false

  • filter?: DynamoDBFilterObject<T> | null (選用)

    從資料表擷取結果後,套用至結果的選用篩選條件。

  • index?: string | null (選用)

    要掃描的索引的選用名稱。

  • limit?: number | null (選用)

    要傳回的選用最大結果數。

  • nextToken?: string | null (選用)

    選用分頁權杖,以繼續先前的查詢。這會是從先前查詢所取得的。

  • scanIndexForward?: boolean | null (選用)

    選用布林值,指出查詢是以遞增或遞減順序執行。依預設,此值是設為 true

  • segment?: number (選用)

  • select?: DynamoDBSelectAttributes (選用)

    從 DynamoDB 傳回的屬性。根據預設, AWS AppSync DynamoDB 解析程式只會傳回投影至索引中的屬性。支援的值是:

    • ALL_ATTRIBUTES

      從指定的資料表或索引傳回所有項目屬性。如果您查詢本機次要索引,DynamoDB 會從索引中每個相符項目的父資料表擷取整個項目。如果索引設定為投射所有項目屬性,所有資料都可從本機次要索引取得,不需進行任何擷取。

    • ALL_PROJECTED_ATTRIBUTES

      傳回已投影至索引中的所有屬性。如果索引設定為投射所有屬性,此傳回值相當於指定 ALL_ATTRIBUTES

    • SPECIFIC_ATTRIBUTES

      僅傳回 中列出的屬性ProjectionExpression。此傳回值等同於指定 ,ProjectionExpression而不指定 的任何值AttributesToGet

  • totalSegments?: number (選用)

Type DynamoDBSyncInput<T>
DynamoDBSyncInput<T>: { basePartitionKey?: string; deltaIndexName?: string; filter?: DynamoDBFilterObject<T> | null; lastSync?: number; limit?: number | null; nextToken?: string | null; }

類型宣告

  • basePartitionKey?: string (選用)

    執行 Sync 操作時要使用的基礎資料表的分割區索引鍵。此欄位允許在資料表使用自訂分割區金鑰時執行同步操作。

  • deltaIndexName?: string (選用)

    用於同步操作的索引。當資料表使用自訂分割區金鑰時,需要此索引才能在整個 delta 存放區資料表上啟用同步操作。同步操作將在 GSI(在 gsi_ds_pk和 上建立gsi_ds_sk) 上執行。

  • filter?: DynamoDBFilterObject<T> | null (選用)

    從資料表擷取結果後,套用至結果的選用篩選條件。

  • lastSync?: number (選用)

    以 epoch 毫秒為單位的時刻,上次成功的同步操作開始。如果指定此值,只會傳回 lastSync 之後變更的項目。只有在從初始同步操作擷取所有頁面之後,才能填入此欄位。如果省略,則會傳回基礎資料表的結果。否則,將會傳回來自 delta 資料表的結果。

  • limit?: number | null (選用)

    一次要評估的選用項目數量上限。如果省略此值,預設限制將設為 100 個項目。此欄位的最大值為 1000 個項目。

  • nextToken?: string | null (選用)

Type DynamoDBUpdateInput<T>
DynamoDBUpdateInput<T>: { _version?: number; condition?: DynamoDBFilterObject<T>; customPartitionKey?: string; key: DynamoDBKey<T>; populateIndexFields?: boolean; update: DynamoDBUpdateObject<T>; }

類型宣告

  • _version?: number (選用)

  • condition?: DynamoDBFilterObject<T> (選用)

    當您在 DynamoDB 中更新物件時,您可以選擇指定條件式表達式,以根據執行操作之前在 DynamoDB 中已存在的物件狀態來控制請求是否成功。

  • customPartitionKey?: string (選用)

    啟用時,該customPartitionKey值會修改啟用版本控制時,delta 同步表使用的 ds_skds_pk 記錄格式。啟用時,也會啟用populateIndexFields項目的處理。

  • key: DynamoDBKey<T> (必要)

    必要參數,指定正在更新的 DynamoDB 中項目的索引鍵。DynamoDB 項目可能具有單一雜湊金鑰或雜湊和排序金鑰。

  • populateIndexFields?: boolean (選用)

    布林值,當 與 啟用時,會為 Delta 同步表中的每個記錄customPartitionKey建立新的項目,特別是在 gsi_ds_pkgsi_ds_sk欄中。

  • update: DynamoDBUpdateObject<T>

    指定要更新的屬性及其新值的物件。更新物件可與 addremove、、replaceincrementdecrementappendprepend、 搭配使用updateListItem

Amazon RDS模組函數

Amazon RDS模組函數在與與 Amazon RDS Data 設定的資料庫互動時提供增強的體驗API。使用 匯入模組@aws-appsync/utils/rds

import * as rds from '@aws-appsync/utils/rds';

也可以個別匯入函數。例如,以下匯入使用 sql

import { sql } from '@aws-appsync/utils/rds';

函數

您可以使用 AWS AppSync RDS模組的公用程式協助程式與資料庫互動。

select 公用程式會建立 SELECT陳述式來查詢您的關聯式資料庫。

基本使用

以基本形式,您可以指定要查詢的資料表:

import { select, createPgStatement } from '@aws-appsync/utils/rds'; export function request(ctx) { // Generates statement: // "SELECT * FROM "persons" return createPgStatement(select({table: 'persons'})); }

請注意,您也可以在資料表識別碼中指定結構描述:

import { select, createPgStatement } from '@aws-appsync/utils/rds'; export function request(ctx) { // Generates statement: // SELECT * FROM "private"."persons" return createPgStatement(select({table: 'private.persons'})); }

指定資料欄

您可以使用 columns 屬性指定資料欄。如果未將此值設定為 值,則預設為 *

export function request(ctx) { // Generates statement: // SELECT "id", "name" // FROM "persons" return createPgStatement(select({ table: 'persons', columns: ['id', 'name'] })); }

您也可以指定資料欄的資料表:

export function request(ctx) { // Generates statement: // SELECT "id", "persons"."name" // FROM "persons" return createPgStatement(select({ table: 'persons', columns: ['id', 'persons.name'] })); }

限制和偏移

您可以套用 limitoffset至查詢:

export function request(ctx) { // Generates statement: // SELECT "id", "name" // FROM "persons" // LIMIT :limit // OFFSET :offset return createPgStatement(select({ table: 'persons', columns: ['id', 'name'], limit: 10, offset: 40 })); }

訂購者

您可以使用 orderBy 屬性排序結果。提供指定資料欄的物件陣列和選用dir屬性:

export function request(ctx) { // Generates statement: // SELECT "id", "name" FROM "persons" // ORDER BY "name", "id" DESC return createPgStatement(select({ table: 'persons', columns: ['id', 'name'], orderBy: [{column: 'name'}, {column: 'id', dir: 'DESC'}] })); }

篩選條件

您可以使用特殊條件物件建置篩選條件:

export function request(ctx) { // Generates statement: // SELECT "id", "name" // FROM "persons" // WHERE "name" = :NAME return createPgStatement(select({ table: 'persons', columns: ['id', 'name'], where: {name: {eq: 'Stephane'}} })); }

您也可以合併篩選條件:

export function request(ctx) { // Generates statement: // SELECT "id", "name" // FROM "persons" // WHERE "name" = :NAME and "id" > :ID return createPgStatement(select({ table: 'persons', columns: ['id', 'name'], where: {name: {eq: 'Stephane'}, id: {gt: 10}} })); }

您也可以建立OR陳述式:

export function request(ctx) { // Generates statement: // SELECT "id", "name" // FROM "persons" // WHERE "name" = :NAME OR "id" > :ID return createPgStatement(select({ table: 'persons', columns: ['id', 'name'], where: { or: [ { name: { eq: 'Stephane'} }, { id: { gt: 10 } } ]} })); }

您也可以使用 否定條件not

export function request(ctx) { // Generates statement: // SELECT "id", "name" // FROM "persons" // WHERE NOT ("name" = :NAME AND "id" > :ID) return createPgStatement(select({ table: 'persons', columns: ['id', 'name'], where: { not: [ { name: { eq: 'Stephane'} }, { id: { gt: 10 } } ]} })); }

您也可以使用下列運算子來比較值:

運算子 描述 可能的值類型
eq 等於 數字、字串、布林值
ne 不等於 數字、字串、布林值
le 小於或等於 數字、字串
lt 小於 數字、字串
ge 大於或等於 數字、字串
gt 大於 數字、字串
contains 就像 string
notContains 不喜歡 string
beginsWith 以字首開頭 string
介於 在兩個值之間 數字、字串
attributeExists 屬性不是 null 數字、字串、布林值
size 檢查元素的長度 string

insert 公用程式提供一種直接的方式,透過 INSERT操作在資料庫中插入單列項目。

單一項目插入

若要插入項目,請指定資料表,然後傳遞至值的物件。物件索引鍵會映射到您的資料表資料欄。資料欄名稱會自動逸出,並使用變數映射將值傳送至資料庫:

import { insert, createMySQLStatement } from '@aws-appsync/utils/rds'; export function request(ctx) { const { input: values } = ctx.args; const insertStatement = insert({ table: 'persons', values }); // Generates statement: // INSERT INTO `persons`(`name`) // VALUES(:NAME) return createMySQLStatement(insertStatement) }

我的SQL使用案例

您可以結合 insert後跟 select來擷取插入的資料列:

import { insert, select, createMySQLStatement } from '@aws-appsync/utils/rds'; export function request(ctx) { const { input: values } = ctx.args; const insertStatement = insert({ table: 'persons', values }); const selectStatement = select({ table: 'persons', columns: '*', where: { id: { eq: values.id } }, limit: 1, }); // Generates statement: // INSERT INTO `persons`(`name`) // VALUES(:NAME) // and // SELECT * // FROM `persons` // WHERE `id` = :ID return createMySQLStatement(insertStatement, selectStatement) }

Postgres 使用案例

透過 Postgres,您可以使用 returning 來從您插入的資料列取得資料。它接受 *或 欄名稱陣列:

import { insert, createPgStatement } from '@aws-appsync/utils/rds'; export function request(ctx) { const { input: values } = ctx.args; const insertStatement = insert({ table: 'persons', values, returning: '*' }); // Generates statement: // INSERT INTO "persons"("name") // VALUES(:NAME) // RETURNING * return createPgStatement(insertStatement) }

update 公用程式可讓您更新現有的資料列。您可以使用條件物件,將變更套用至滿足條件的所有資料列中的指定資料欄。例如,假設我們有一個結構描述,允許我們產生此突變。我們希望Person使用 id的值更新 name 的 ,3但前提是我們從 開始已知道它們 (known_since2000

mutation Update { updatePerson( input: {id: 3, name: "Jon"}, condition: {known_since: {ge: "2000"}} ) { id name } }

我們的更新解析程式如下所示:

import { update, createPgStatement } from '@aws-appsync/utils/rds'; export function request(ctx) { const { input: { id, ...values }, condition } = ctx.args; const where = { ...condition, id: { eq: id }, }; const updateStatement = update({ table: 'persons', values, where, returning: ['id', 'name'], }); // Generates statement: // UPDATE "persons" // SET "name" = :NAME, "birthday" = :BDAY, "country" = :COUNTRY // WHERE "id" = :ID // RETURNING "id", "name" return createPgStatement(updateStatement) }

我們可以將檢查新增至我們的條件,以確保僅3更新具有id等於 主索引鍵的資料列。同樣地,對於 Postgres inserts,您可以使用 returning 來傳回修改的資料。

remove 公用程式可讓您刪除現有的資料列。您可以在滿足條件的所有資料列上使用條件物件。請注意, delete 是 中預留的關鍵字 JavaScript。remove應該改用:

import { remove, createPgStatement } from '@aws-appsync/utils/rds'; export function request(ctx) { const { input: { id }, condition } = ctx.args; const where = { ...condition, id: { eq: id } }; const deleteStatement = remove({ table: 'persons', where, returning: ['id', 'name'], }); // Generates statement: // DELETE "persons" // WHERE "id" = :ID // RETURNING "id", "name" return createPgStatement(updateStatement) }

轉換

在某些情況下,您可能希望在陳述式中使用有關正確物件類型的更具體性。您可以使用提供的類型提示來指定參數的類型。 AWS AppSync 支援與資料 相同的類型提示API。您可以使用模組中的 typeHint函數 AWS AppSync rds來轉換參數。

下列範例可讓您將陣列傳送為轉換為JSON物件的值。我們使用->運算子在JSON陣列index2中的 擷取 元素:

import { sql, createPgStatement, toJsonObject, typeHint } from '@aws-appsync/utils/rds'; export function request(ctx) { const arr = ctx.args.list_of_ids const statement = sql`select ${typeHint.JSON(arr)}->2 as value` return createPgStatement(statement) } export function response(ctx) { return toJsonObject(ctx.result)[0][0].value }

在處理和比較 DATE、 和 時TIME, Casting 也很有用TIMESTAMP

import { select, createPgStatement, typeHint } from '@aws-appsync/utils/rds'; export function request(ctx) { const when = ctx.args.when const statement = select({ table: 'persons', where: { createdAt : { gt: typeHint.DATETIME(when) } } }) return createPgStatement(statement) }

以下是另一個範例,示範如何傳送目前的日期和時間:

import { sql, createPgStatement, typeHint } from '@aws-appsync/utils/rds'; export function request(ctx) { const now = util.time.nowFormatted('YYYY-MM-dd HH:mm:ss') return createPgStatement(sql`select ${typeHint.TIMESTAMP(now)}`) }

可用的類型提示

  • typeHint.DATE - 對應的參數會以 DATE類型的物件傳送至資料庫。接受的格式為 YYYY-MM-DD

  • typeHint.DECIMAL - 對應的參數會以 DECIMAL類型的物件形式傳送至資料庫。

  • typeHint.JSON - 對應的參數會以 JSON類型的物件形式傳送至資料庫。

  • typeHint.TIME - 對應的字串參數值會以 TIME類型的物件形式傳送至資料庫。接受的格式為 HH:MM:SS[.FFF]

  • typeHint.TIMESTAMP - 對應的字串參數值會以 TIMESTAMP類型的物件形式傳送至資料庫。接受的格式為 YYYY-MM-DD HH:MM:SS[.FFF]

  • typeHint.UUID - 對應的字串參數值會以 UUID類型的物件形式傳送至資料庫。