Skip to content

kiril-me/cassandrom

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cassandrom

Cassandrom is a Cassandra object modeling tool for Node JS (like mongoose).

Installation

Install node.js and cassandra

$ npm install cassandrom

Connecting to Cassandra

To use cassandrom first create connection.

var cassandrom = require('cassandrom');

cassandrom.createConnection({ contactPoints: [
  'localhost'
  // , 'another-host',
  ], localDataCenter: 'datacenter1', keyspace: 'keyspace'});

Defining a Schema

var schema = new cassandrom.Schema({
  userId:   { type: cassandrom.UUIDType, required: true, default: cassandrom.uuid },
  fullName: { type: String, required: true, trim: true },
  username: { type: String, required: true, unique: true, trim: true },
  email:    { type: String, required: true, unique: true, trim: true },
  password: { type: String, required: true },
  date:     { type: Date, default: Date.now, required: true }

}, ['userId']);

Get Model and Start work

var User = cassandrom.model("User", schema);

Create and save Model

User.create({
  fullName: 'John Doe',
  username: 'john',
  email: 'john@doe.com',
  password: 'doedoe'
}, function (error, user) {
  if(error) {
    console.log('Error during user save: ' + error);
  } else {
    console.log('User saved ' + user.userId + ' date ' + user.date);
  }
});

Searching

Find all records match the certain field.

User.find({ username: name }, function(error, results) {
  console.log('Find ' + results.length + ' users');
});

Find only one record.

User.findOne({ username: name }, function(error, user) {
  console.log('Find found ' + user);
});

Add New Methods

schema.statics.findByUserame = function(name, callback) {
  this.findOne({ username: name }, callback);
};

schema.statics.findById = function(id, callback) {
  this.findOne({ userId: id }, callback);
};

Promise

User.findOne({ username: name })
    .then(function(user)) {

    }
    .catch(function(error) {

    });

ES6

const user = await aUser.findOne({ username: name });

Cassandra Driver access

DataStax nodejs-driver for Apache Cassandra were used.

Creators

Kiril Menshikov - https://twitter.com/kiril

Copyright and license

Code released under the Apache 2.0 license.

About

Cassandra object modeling tool for Node.Js like mongoose

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published