본문으로 건너뛰기

함수: powerSyncCollectionOptions()

스키마 구성과 비스키마 구성을 모두 처리하는 powerSyncCollectionOptions의 구현입니다.

호출 시그니처

function powerSyncCollectionOptions<TTable>(config): EnhancedPowerSyncCollectionConfig<TTable, OptionalExtractedTable<TTable>, never>;

정의 위치: powersync.ts:79

기본 유효성 검사를 포함한 PowerSync 컬렉션 구성을 생성합니다. 입력 및 출력 타입은 SQLite 열 타입입니다.

타입 매개변수

TTable

TTable extends Table&lt;ColumnsType> = Table&lt;ColumnsType>

매개변수

config

BasePowerSyncCollectionConfig&lt;TTable, never> & ConfigWithSQLiteTypes

반환값

EnhancedPowerSyncCollectionConfig&lt;TTable, OptionalExtractedTable&lt;TTable>, never>

예제

const APP_SCHEMA = new Schema({
documents: new Table({
name: column.text,
}),
})

type Document = (typeof APP_SCHEMA)["types"]["documents"]

const db = new PowerSyncDatabase({
database: {
dbFilename: "test.sqlite",
},
schema: APP_SCHEMA,
})

const collection = createCollection(
powerSyncCollectionOptions({
database: db,
table: APP_SCHEMA.props.documents
})
)

호출 시그니처

function powerSyncCollectionOptions<TTable, TSchema>(config): CollectionConfig<InferPowerSyncOutputType<TTable, TSchema>, string, TSchema, PowerSyncCollectionUtils<TTable>> & object & object;

정의 위치: powersync.ts:136

스키마 유효성 검사를 포함한 PowerSync 컬렉션 구성을 생성합니다.

입력 타입은 SQLite 열 타입을 충족합니다.

출력 타입은 제공된 스키마로 정의됩니다. 이 스키마는 추가 검증 또는 타입 변환을 적용할 수 있습니다. 임의의 출력 타입 뮤테이션은 영속성을 위해 SQLite로 인코딩됩니다. 열 값을 직렬화하기 위한 기본 표준 직렬화 구현을 제공합니다. 사용자 지정 또는 고급 타입에는 추가 직렬 변환기 사양을 제공해야 합니다. 열의 부분 재정의는 serializer에 제공할 수 있습니다.

타입 매개변수

TTable

TTable extends Table&lt;ColumnsType>

TSchema

TSchema extends StandardSchemaV1&lt;OptionalExtractedTable&lt;TTable>, AnyTableColumnType&lt;TTable>>

매개변수

config

BasePowerSyncCollectionConfig&lt;TTable, TSchema> & SerializerConfig&lt;InferOutput&lt;TSchema>, ExtractedTable&lt;TTable>> & object

반환값

CollectionConfig&lt;InferPowerSyncOutputType&lt;TTable, TSchema>, string, TSchema, PowerSyncCollectionUtils&lt;TTable>> & object & object

예제

import { z } from "zod"

// The PowerSync SQLite schema
const APP_SCHEMA = new Schema({
documents: new Table({
name: column.text,
// Dates are stored as ISO date strings in SQLite
created_at: column.text
}),
})

// Advanced Zod validations. The output type of this schema
// is constrained to the SQLite schema of APP_SCHEMA
const schema = z.object({
id: z.string(),
// Notice that `name` is not nullable (is required) here and it has additional validation
name: z.string().min(3, { message: "Should be at least 3 characters" }).nullable(),
// The input type is still the SQLite string type. While collections will output smart Date instances.
created_at: z.string().transform(val => new Date(val))
})

const collection = createCollection(
powerSyncCollectionOptions({
database: db,
table: APP_SCHEMA.props.documents,
schema,
serializer: {
// The default is toISOString, this is just to demonstrate custom overrides
created_at: (outputValue) => outputValue.toISOString(),
},
})
)

호출 시그니처

function powerSyncCollectionOptions<TTable, TSchema>(config): CollectionConfig<InferPowerSyncOutputType<TTable, TSchema>, string, TSchema, PowerSyncCollectionUtils<TTable>> & object & object;

정의 위치: powersync.ts:204

스키마 유효성 검사를 포함한 PowerSync 컬렉션 구성을 생성합니다.

입력 타입은 내부 SQLite 테이블 타입에 연결되지 않습니다. 따라서 예를 들어 insert 또는 update 작업의 입력으로 풍부한 타입을 허용하는 등 더 큰 유연성을 제공할 수 있습니다. 수신되는 SQLite 업데이트를 출력 타입으로 처리하려면 추가 deserializationSchema가 필요합니다.

출력 타입은 제공된 스키마로 정의됩니다. 이 스키마는 추가 검증 또는 타입 변환을 적용할 수 있습니다. 임의의 출력 타입 뮤테이션은 영속성을 위해 SQLite로 인코딩됩니다. 열 값을 직렬화하기 위한 기본 표준 직렬화 구현을 제공합니다. 사용자 지정 또는 고급 타입에는 추가 직렬 변환기 사양을 제공해야 합니다. 열의 부분 재정의는 serializer에 제공할 수 있습니다.

타입 매개변수

TTable

TTable extends Table&lt;ColumnsType>

TSchema

TSchema extends StandardSchemaV1&lt;AnyTableColumnType&lt;TTable>, AnyTableColumnType&lt;TTable>>

매개변수

config

BasePowerSyncCollectionConfig&lt;TTable, TSchema> & SerializerConfig&lt;InferOutput&lt;TSchema>, ExtractedTable&lt;TTable>> & object

반환값

CollectionConfig&lt;InferPowerSyncOutputType&lt;TTable, TSchema>, string, TSchema, PowerSyncCollectionUtils&lt;TTable>> & object & object

예제

import { z } from "zod"

// The PowerSync SQLite schema
const APP_SCHEMA = new Schema({
documents: new Table({
name: column.text,
// Booleans are represented as integers in SQLite
is_active: column.integer
}),
})

// Advanced Zod validations.
// We accept boolean values as input for operations and expose Booleans in query results
const schema = z.object({
id: z.string(),
isActive: z.boolean(), // TInput and TOutput are boolean
})

// The deserializationSchema converts the SQLite synced INTEGER (0/1) values to booleans.
const deserializationSchema = z.object({
id: z.string(),
isActive: z.number().nullable().transform((val) => val == null ? true : val > 0),
})

const collection = createCollection(
powerSyncCollectionOptions({
database: db,
table: APP_SCHEMA.props.documents,
schema,
deserializationSchema,
})
)