Skip to content

ydb-platform/ydb-js-sdk

Repository files navigation

YDB JavaScript SDK

A modular, modern SDK for working with YDB in JavaScript/TypeScript. Supports queries, transactions, types, error handling, authentication, and more.

Other versions


Packages


Quick Start

1. Run YDB Locally

Start a local YDB instance with Docker: https://ydb.tech/docs/en/quickstart

2. Install Required Packages

npm install @ydbjs/core @ydbjs/query

3. Connect and Query

import { Driver } from '@ydbjs/core'
import { query } from '@ydbjs/query'

const driver = new Driver('grpc://localhost:2136/local')
await driver.ready()

const sql = query(driver)
const resultSets = await sql`SELECT 1 + 1 AS sum`
console.log(resultSets) // [ [ { sum: 2 } ] ]

Installation

npm install @ydbjs/core @ydbjs/query @ydbjs/value @ydbjs/api @ydbjs/error

Documentation


Examples

Parameterized Query:

import { Int64, Optional, PrimitiveType } from '@ydbjs/value'
const sql = query(driver)
await sql`SELECT ${new Optional(new Int64(100n), new PrimitiveType('INT64'))};`

Transactions:

await sql.begin(async (tx, signal) => {
  await tx`INSERT INTO users (id, name) VALUES (1, 'Alice')`
  await tx`UPDATE users SET name = 'Bob' WHERE id = 1`
})

Error Handling:

import { YdbError } from '@ydbjs/error'
try {
  await sql`SELECT * FROM non_existent_table`
} catch (e) {
  if (e instanceof YdbError) {
    console.error('YDB Error:', e.message)
  }
}

FAQ

  • Add a new service? Use @ydbjs/api for gRPC definitions.
  • Work with YDB types? Use @ydbjs/value.
  • Implement retries? Use @ydbjs/retry.
  • More examples? See package docs and GitHub Examples.

Developer Guide

  • Build all packages: npm run build
  • Run all tests: npm test