コンテンツにスキップ

Thing

Thingレコード ID を表現するためのクラスです。

インポート

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