컨텐츠로 건너뛰기

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";