コンテンツにスキップ

クエリー

.query() インスタンス メソッド

カスタム SurrealQL を実行します。

query(
surql: string | object,
vars?: { [p: string]: unknown },
options?: ClientRpcOptions,
): Promise<unknown[]>;

引数

surql

SurrealQL の文字列または事前に準備されたクエリーです。

vars

SurrealQL の実行時に渡す変数です。変数名はドルマークから始まらないように注意してください。

options

PRC リクエストのオプションです。

返値

SurrealQL の実行結果の配列で解決される Promise オブジェクトを返します。ステートメントが 1 つ以上失敗した場合、それらのエラーメッセージを含む QueryFailedError で拒否します。

このメソッドが拒否されると実行結果を得る手段はありません。エラーハンドリングを手動で行う場合、.queryRaw() を使うことができます。

次の例ではクエリーの実行に成功します:

import { Surreal } from "@tai-kun/surrealdb";
const db = new Surreal();
await db.connect("ws://localhost:8000");
const results = await db.query(`
CREATE ONLY user:foo CONTENT { age: 42 };
`);
console.log(results);
// [{
// id: Thing { tb: 'user', id: 'foo' },
// age: 42
// }]
await db.disconnect();

次の例では一方のステートメントが失敗するため、クエリーは QueryFailedError で拒否されます:

import { Surreal } from "@tai-kun/surrealdb";
const db = new Surreal();
await db.connect("ws://localhost:8000");
const results = await db.query(`
CREATE ONLY user:foo CONTENT { age: 42 };
OUTPUT 42;
`); // throws QueryFailedError: Query failed with 1 error(s)

次の例では事前に準備されたクエリーを実行します:

import { surql, Surreal, Thing } from "@tai-kun/surrealdb";
const CreateUserQuery = surql`
CREATE ONLY user:foo CONTENT { age: 42 };
`.returns<[{ id: Thing<"user">, age: number }]>()
const db = new Surreal();
await db.connect("ws://localhost:8000");
const results = await db.query(CreateUserQuery);
// ^? const results: [{ id: Thing<"user">, age: number }]
await db.disconnect();

.queryRaw() インスタンス メソッド

カスタム SurrealQL を実行します。

queryRaw(
surql: string | object,
vars?: { [p: string]: unknown },
options?: ClientRpcOptions,
): Promise<QueryResult[]>;

引数

surql

SurrealQL の文字列または事前に準備されたクエリーです。

vars

SurrealQL の実行時に渡す変数です。変数名は $ から始まらないように注意してください。

options

PRC リクエストのオプションです。

返値

SurrealQL の実行結果の配列で解決される Promise オブジェクトを返します。

type QueryResult = {
status: "OK";
time: string;
result: unknown;
} | {
status: "ERR";
time: string;
result: string;
};