Skip to content

Query Service

The query service allow you to perform SQL queries on your database.

Query Context

If you want to execute a query on a given scope, you can pass the queryContext argument.

ts

const 
result
=
cluster
.
query
('SELECT title FROM books', {
queryContext
: 'store.library'
});

Custom parser

The query service will return a json object for each result. If your query returns a value that cannot be parsed by JSON.parse, you may run into troubles.

For example, cas are returned as number that exceed Number.MAX_SAFE_INTEGER :

ts
const result = cluster.query('SELECT META().cas AS cas FROM store.library.book');
const queryCas = result.rows[0].cas;

console.log(typeof queryCas); // 'number' 
console.log(queryCas > Number.MAX_SAFE_INTEGER); // true

So you may want to pass a custom parser, such as json-bigint :

ts
import JSONBigint from 'json-bigint';

const result = cluster.query('SELECT META().cas AS cas FROM store.library.book', {
  queryResultParser: JSONBigInt({ useNativeBigInt: true }).parse,
});
const queryCas = result.rows[0].cas;

console.log(typeof queryCas); // 'bigint'

You can set a default custom parser when constructing your cluster connection :

ts
const cluster = connect('...', {
  queryResultParser: customParser
})