Thing
Thing
는 레코드 ID를 표현하는 클래스입니다.
import
import { Thing } from "@tai-kun/surrealdb/decodeonly-datatypes";import { Thing } from "@tai-kun/surrealdb/encodable-datatypes";import { Thing } from "@tai-kun/surrealdb/standard-datatypes";
.constructor()
새로운 Thing
객체를 생성합니다.
new Thing(source: [table: string, id: string | number | bigint | object]);new Thing(table: string, id: string | number | bigint | object);
매개변수
source
레코드 ID의 테이블 부분과 ID 부분의 쌍입니다.
table
레코드 ID의 테이블 부분입니다.
id
레코드 ID의 ID 부분입니다.
반환값
new
를 통해 호출된 경우, Thing
은 해당 인스턴스를 반환합니다.
.table
인스턴스 속성 >=decode-only
레코드 ID의 테이블 부분입니다. 이 프로퍼티를 가져올 때 문자열은 이스케이프되지 않습니다.
.table: string;
예시
이 프로퍼티를 가져올 때 문자열은 이스케이프되지 않습니다.
import { Thing } from "@tai-kun/surrealdb/decodeonly-datatypes";
const thing = new Thing("foo-bar", 0);console.log(this.id);//-> foo-bar
.id
인스턴스 속성 >=decode-only
레코드 ID의 ID 부분입니다.
.id: string | number | bigint | object;
.toString()
인스턴스 메서드 >=encodable
Thing
객체를 SurrealQL 변수에서 사용 가능한 문자열로 변환합니다. 테이블 이름과 ID 부분은 각각 SurrealDB 구현과 동일하게 이스케이프 및 포맷됩니다. 또한 객체의 프로퍼티는 오름차순으로 정렬됩니다.
.valueOf()
와 .toJSON()
은 이 메서드와 동일한 결과를 반환합니다.
.toString(): string;
매개변수
없음.
반환값
레코드 ID로 포맷된 문자열을 반환합니다.
예시
import { Thing } from "@tai-kun/surrealdb/encodable-datatypes";
const thing = new Thing([ "foo-bar", new Uuid("018fb2c0-7bb7-7fca-8308-b24d0be065dc"),]);console.log(thing.toString());//-> ⟨foo-bar⟩:u'018fb2c0-7bb7-7fca-8308-b24d0be065dc'
.toSurql()
인스턴스 메서드 >=encodable
Thing
객체를 SurrealQL에 포함할 수 있는 문자열로 변환합니다. .toString()
과 유사하지만, r
접두사를 추가하여 쿼리 파서에 문자열이 레코드 ID임을 알립니다.
.toSurql(): string;
매개변수
없음.
반환값
레코드 ID로 포맷된 문자열을 반환합니다.
예시
import { Thing } from "@tai-kun/surrealdb/encodable-datatypes";
const thing = new Thing("foo", "bar");console.log(thing.toSurql());//-> r'foo:bar'
.clone()
인스턴스 메서드 =standard
Thing
객체를 복제합니다. 하지만 ID 부분은 복제되지 않고 참조됩니다.
.clone(): this;
매개변수
없음.
반환값
새로운 Thing
객체를 반환합니다. Thing
클래스를 상속하는 경우, 해당 클래스의 인스턴스가 반환됩니다.
심화
타입 가드
Thing
의 테이블 부분과 ID 부분을 각각 타입 매개변수를 사용하여 타입 안전하게 할 수 있습니다:
import { Thing, Uuid } from "@tai-kun/surrealdb/standard-datatypes";
function isUserRecordId(thing: unknown): thing is Thing<"user", Uuid> { return thing instanceof Thing && thing.table === "user" && thing.id instanceof Uuid}
Thing
객체의 일반적인 판정
프리셋에 의존하지 않고 값이 Thing
객체인지 판정하려면 isThing
함수를 사용하는 것을 권장합니다. 이 함수는 instanceof
를 사용하지 않으므로, 검증할 값의 프리셋이 불명확한 경우에 유용합니다.
import { isThing } from "@tai-kun/surrealdb";