Hello Columnar — Node.js SDK Quickstart Guide
Install, connect, try. A quick start guide to get you up and running with Columnar and the Node.js Columnar SDK.
Capella Columnar is a real-time analytical database (RT-OLAP) for real time apps and operational intelligence. Although maintaining some syntactic similarities with the operational SDKs, the Node.js Columnar SDK is developed from the ground-up for Columnar’s analytical use cases, and supports streaming APIs to handle large datasets.
Before You Start
Sign up for a Capella account, and choose a Columnar cluster.
You’ll need to add your IP address to the allowlist, during the sign-up and cluster creation process (this can also be done at any time, via the UI, should the address change, or if you need to add a new one).
Prerequisites
The Columnar Node.js SDK supports LTS versions of Node.js — these are 20 and 22 at the time of the 1.0.0 release (October 2024). See the compatibility page for more information about platform support.
We recommend using the most recent long-term support (LTS) version of Node.js — at the time of writing (October 2024) this is version 22.
Getting the SDK
The SDK can be installed via npm
:
npm install couchbase-columnar
For other installation methods, see the installation page.
Connecting and Executing a Query
To use there examples, create a collection to work upon by importing the travel-sample dataset into your cluster.
CommonJS
const columnar = require('couchbase-columnar')
async function main() {
// Update this to your cluster
const clusterConnStr = 'couchbases://--your-instance--'
const username = 'username'
const password = 'Password123!'
// User Input ends here.
const credential = new columnar.Credential(username, password)
const cluster = columnar.createInstance(clusterConnStr, credential)
// Execute a streaming query with positional arguments.
let qs = 'SELECT * FROM `travel-sample`.inventory.airline LIMIT 10;'
let res = await cluster.executeQuery(qs)
for await (let row of res.rows()) {
console.log('Found row: ', row)
}
console.log('Metadata: ', res.metadata())
// Execute a streaming query with positional arguments.
qs =
'SELECT * FROM `travel-sample`.inventory.airline WHERE country=$1 LIMIT $2;'
res = await cluster.executeQuery(qs, { parameters: ['United States', 10] })
for await (let row of res.rows()) {
console.log('Found row: ', row)
}
console.log('Metadata: ', res.metadata())
// Execute a streaming query with named parameters.
qs =
'SELECT * FROM `travel-sample`.inventory.airline WHERE country=$country LIMIT $limit;'
res = await cluster.executeQuery(qs, {
parameters: { country: 'United States', limit: 10 },
})
for await (let row of res.rows()) {
console.log('Found row: ', row)
}
console.log('Metadata: ', res.metadata())
}
main()
.then(() => {
console.log('Finished. Exiting app...')
})
.catch((err) => {
console.log('ERR: ', err)
console.log('Exiting app...')
process.exit(1)
})
ES Modules
import { Certificates, Credential, createInstance } from "couchbase-columnar"
async function main() {
// Update this to your cluster
const clusterConnStr = 'couchbases://--your-instance--'
const username = 'username'
const password = 'Password123!'
// User Input ends here.
const credential = new Credential(username, password)
const cluster = createInstance(clusterConnStr, credential)
// Execute a streaming query with positional arguments.
let qs = "SELECT * FROM `travel-sample`.inventory.airline LIMIT 10;"
let res = await cluster.executeQuery(qs)
for await (let row of res.rows()) {
console.log("Found row: ", row)
}
console.log("Metadata: ", res.metadata())
// Execute a streaming query with positional arguments.
qs =
"SELECT * FROM `travel-sample`.inventory.airline WHERE country=$1 LIMIT $2;"
res = await cluster.executeQuery(qs, { parameters: ["United States", 10] })
for await (let row of res.rows()) {
console.log("Found row: ", row)
}
console.log("Metadata: ", res.metadata())
// Execute a streaming query with named parameters.
qs =
"SELECT * FROM `travel-sample`.inventory.airline WHERE country=$country LIMIT $limit;"
res = await cluster.executeQuery(qs, {
parameters: { country: "United States", limit: 10 },
})
for await (let row of res.rows()) {
console.log("Found row: ", row)
}
console.log("Metadata: ", res.metadata())
}
main()
.then(() => {
console.log("Finished. Exiting app...")
})
.catch((err) => {
console.log("ERR: ", err)
console.log("Exiting app...")
process.exit(1)
})