Skip to content

a sample project to use scylladb in nodejs with express-cassandra

Notifications You must be signed in to change notification settings

azita-abdollahi/nodeScyllaDB

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

What is ScyllaDB?

ScyllaDB is a distributed NoSQL database that is highly compatible with Cassandra. It is written in C++ and offers improved performance and efficiency compared to Cassandra. ScyllaDB provides low-latency and high-throughput data storage and is a popular choice for applications that require real-time data processing.

Express-Cassandra

Express-Cassandra is a Cassandra ORM/ODM/OGM for Node.js that also supports ScyllaDB. It allows you to work with Cassandra and ScyllaDB databases using object-oriented mapping and provides a decoupled nature, making it compatible with popular Node.js frameworks.

To get started with Express-Cassandra, you can refer to the official documentation .

Project Setup

Create a new project folder with the following command

mkdir node_scylla 
cd node_scylla

The JWT Authentication Architecture is built with:

  • Node.js – a JavaScript run-time scripting language
  • Expressjs – serves as a Node.js framework
  • Express-Cassandra – is a Cassandra ORM/ODM/OGM for NodeJS with support for ScyllaDB
  • lodash – The Lodash library exported as Node.js modules.
  • cors – To allow Cross-Origin Resource Sharing between the backend and frontend
  • morgan – HTTP request logger middleware for node.js
  • nodemon – is a tool that helps develop Node.js based applications by automatically restarting the node application when file changes in the directory are detected.

Prerequisites

  • Node.js
  • Docker
  • Docker-compose
  • scylladb

These are the API endpoints we need for this Rest API

RESOURCE HTTP METHOD ROUTE DESCRIPTION
books GET /api/book/get returns book information
books POST /api/book/create create book information
books POST /api/book/update update book information
books POST /api/book/delete delete book information

Initialize a Node.js Project

The first thing we always do before coding a Node.js project that will require external libraries is to initialize a new project with the following command.

npm init

You will be prompted to provide some answers. If you don’t want to answer questions then use the -yflag.

npm init -y  

Install the Dependencies

npm i dotenv express lodash cors express-cassandra 

Install the devDependencies

npm i -D morgan nodemon 

Now add the dev script to the package.json file

"scripts": {"dev": "nodemon ./src/index.js"}

docker-compose.yml

​ to see docker-compose file click here.

Run the App

​ start the docker containers

#up docker containers and build
docker compose up -d --build  
#see the docker containers  
docker compose ps  
#stop the docker containers  
docker compose down  
#following logs of docker containers  
docker compose logs -f
#run cqlsh for scyllaDB at first
docker compose exec scylla cqlsh -u cassandra -p cassandra
#run cqlsh after change username password and remove default user role.
docker compose exec scylla cqlsh -u username -p password

Note: By default backend service listens on TCP/3000 port

Note: for running node application

npm run dev

see the images of runnig project from here.

see wiki for work with cqlsh from here.

About

a sample project to use scylladb in nodejs with express-cassandra

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published