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.

      Before You Start

      Sign up for a Capella Free Tier, 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)
          })