跳转到内容

toSurql

toSurql 函数用于将 JavaScript 值转换为 SurrealQL 字符串。

导入

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

使用方法

function toSurql(value: unlnown): string;

参数

value

JavaScript 值。支持以下类型:

  • string
  • number
  • bigint
  • boolean
  • undefined
  • null
  • { toSurql(): string }
  • Date
  • { toJSON(): string }
  • unknown[]
  • { [key: string]: unknown }
  • Set<unknown>
  • Map<unknown, unknown>

unknown 表示上述类型的组合值。

转换时,以上顺序表示优先级。也就是说,即使普通对象具有 .toJSON 函数,如果它也具有 .toSurql 函数,则后者优先。

普通对象的判断使用 is-plain-obj。因此,如果普通对象既不具有 .toSurql 也不具有 .toJSON,并且具有 Symbol.toStringTagSymbol.iterator,则不会将其判断为对象,而是抛出错误。

返回值

SurrealQL 字符串。

例子

import { toSurql } from "@tai-kun/surrealdb/utils";
const surql = toSurql({
bigint: 9007199254740992n, // Number.MAX_SAFE_INTEGER + 1
boolean: [true, false],
date: new Date("2024-06-01T12:34:56.789Z"),
map: new Map([
[0, {
toJSON: () => [0, 1],
}],
]),
null: null,
number: 123,
set: new Set([{
toSurql: () => `<bytes>"hello"`,
}]),
string: "字符串",
undefined: undefined,
});
console.log(surql);

输出:

{bigint:9007199254740992,boolean:[true,false],date:d'2024-06-01T12:34:56.789Z',map:{0:[0,1]},null:NULL,number:123,set:[<bytes>"hello"],string:'字符串',undefined:NONE}