컨텐츠로 건너뛰기

쿼리

.query() 인스턴스 메서드

사용자 지정 SurrealQL을 실행합니다.

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

인수

surql

SurrealQL 문자열 또는 미리 준비된 쿼리입니다.

vars

SurrealQL 실행 시 전달하는 변수입니다. 변수 이름은 달러 기호($)로 시작하지 않도록 주의하십시오.

options

PRC 요청 옵션입니다.

반환값

SurrealQL 실행 결과의 배열로 해결되는 Promise 객체를 반환합니다. 하나 이상의 문이 실패한 경우, 해당 에러 메시지를 포함하는 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.close();

다음 예는 한쪽 문이 실패하기 때문에 쿼리가 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.close();

.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;
};