跳转到内容

查询

.query() 实例 方法

执行自定义 SurrealQL 查询。

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

参数

surql

SurrealQL 字符串或预先准备好的查询。

vars

在执行 SurrealQL 时传递的变量。请注意,变量名不能以美元符号开头。

options

PRC 请求选项。

返回值

返回一个 Promise 对象,该对象解析为 SurrealQL 执行结果的数组。如果一个或多个语句失败,则会以包含错误消息的 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 请求选项。

返回值

返回一个 Promise 对象,该对象解析为 SurrealQL 执行结果的数组。

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