Future
Future
类表示 SurrealDB 的 Futures 功能。
导入
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。此外,如果您安装了 SurrealDB 官方扩展 ,则 VSCode 中的模板字面量语法高亮将生效。
.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
对象的通用判断
建议使用 isFuture
函数来判断值是否为 Future
对象,而无需依赖预设。此函数不使用 instanceof
,因此在验证值的预设未知时非常有用。
import { isFuture } from "@tai-kun/surrealdb";