컨텐츠로 건너뛰기
이 기능은 실험적인 기능입니다.

Future

Future는 SurrealDB의 Futures 기능을 나타내는 클래스입니다.

import

import { Future } from "@tai-kun/surrealdb/decodeonly-datatypes";
import { Future } from "@tai-kun/surrealdb/encodable-datatypes";
import { Future } from "@tai-kun/surrealdb/standard-datatypes";

.constructor()

새로운 Future 객체를 생성합니다.

new Future(source: string);

매개변수

source

future 블록 내의 값 또는 식입니다.

반환값

new를 통해 호출될 경우, Future는 해당 인스턴스를 반환합니다.

.block 인스턴스 속성 >=decode-only

future 블록 내의 값 또는 식입니다.

.block: number;

.toString() 인스턴스 메서드 >=encodable

Future 객체를 문자열로 변환합니다.

.toString(): string;

매개변수

없음.

반환값

future 블록 내의 값 또는 식을 반환합니다.

예시

import { Future } from "@tai-kun/surrealdb/encodable-datatypes";
const future = new Future(`time::now()`);
console.log(future.toString());
//-> time::now()

.toSurql() 인스턴스 메서드 >=encodable

Future 객체를 SurrealQL에 포함할 수 있는 문자열로 변환합니다. .toString()과 유사하지만, 블록은 중괄호({})로 둘러싸여 있으며 <future>로 캐스팅됩니다.

.toSurql(): string;

매개변수

없음.

반환값

SurrealQL에 포함할 수 있는 future를 반환합니다.

예시

import { Future } from "@tai-kun/surrealdb/encodable-datatypes";
const future = new Future(`time::now()`);
console.log(future.toSurql());
//-> <future>{time::now()}

.surql() 정적 메서드 =standard

이 메서드는 SurrealQL 작성을 지원합니다. 템플릿 리터럴을 사용하여 SurrealQL을 작성할 수 있습니다. 템플릿 리터럴에 포함된 값은 자동으로 SurrealQL로 변환됩니다. 또한 VSCode에서 SurrealDB 공식 확장 기능을 설치한 경우, 템플릿 리터럴의 구문 강조 표시가 활성화됩니다.

.surql(texts: TemplateStringsArray, ...values: unknown[]): string;

매개변수

texts

템플릿 리터럴을 구성하는 문자열 배열입니다.

values

texts의 각 요소 사이에 삽입할 값입니다.

반환값

SurrealQL입니다.

예시

import { Future, Thing } from "@tai-kun/surrealdb/standard-datatypes";
const foo = "foo";
const rid = new Thing("person", "tai-kun");
const future = new Future(Future.surql`
LET $a = ${foo} + ${Future.raw("'-'")};
LET $b = type::string(${rid});
string::concat($a, $b)
`);
console.log(future.toSurql());
//-> <future>{
//-> LET $a = 'foo' + '-';
//-> LET $b = type::string(r'person:⟨tai-kun⟩');
//-> string::concat($a, $b)
//-> }

위의 예시를 .surql()을 사용하지 않으면 다음과 같습니다.

import { Future, Thing } from "@tai-kun/surrealdb/standard-datatypes";
import { toSurql } from "@tai-kun/surrealdb/utils";
const foo = "foo";
const rid = new Thing("person", "tai-kun");
const future = new Future(/*surql*/ `
LET $a = ${toSurql(foo)} + ${"'-'"};
LET $b = type::string(${rid.toSurql()});
string::concat($a, $b)
`);
console.log(future.toSurql());
//-> <future>{
//-> LET $a = 'foo' + '-';
//-> LET $b = type::string(r'person:⟨tai-kun⟩');
//-> string::concat($a, $b)
//-> }
  • 문자열이나 객체를 toSurql 헬퍼 함수나 .toSurql() 메서드를 사용하여 SurrealQL로 변환해야 합니다.
  • Future.raw를 사용하지 않고 문자열을 SurrealQL에 포함할 수 있습니다.

추가 정보

Future 객체의 일반적인 판별

프리셋에 의존하지 않고 값이 Future 객체인지 판별하려면 isFuture 함수를 사용하는 것이 좋습니다. 이 함수는 instanceof를 사용하지 않으므로, 검증할 값의 프리셋이 불명확한 경우에 유용합니다.

import { isFuture } from "@tai-kun/surrealdb";