Nodejs操做Cassandra數據庫


前言

  • 操做系統win10
  • 時間2019年02月
  • Nodejs版本:node v8.9.3
  • Cassandra版本:cassandra-3.11.3
  • 參考網址1

安裝Cassandra

安裝Cassandra數據庫

  1. 官網下載Cassandra壓縮包
  2. 解壓,並配置環境變量:
操做 變量名 變量值
新建 CASSANDRA_HOME 解壓路徑
增長 PATH 解壓路徑\bin;

安裝Nodejs的Cassandra依賴包

npm install cassandra-driver -g

-g參數表示全局安裝,這樣在哪都能用了數據庫

測試

C:\Users\wahaha>cassandra

Nodejs操做Cassandra

select

包含一份日誌配置,能夠根據不一樣的日誌級別輸出成文件apache

/**
 * Connect loacal cassandra database.
 * Output the log as a file '*.log'.
 */
const cassandra = require('cassandra-driver');
var PlainTextAuthProvider = cassandra.auth.PlainTextAuthProvider;

// config log
const log4js = require('log4js');

log4js.configure({
    appenders: {
        out: {
            type: 'console'
        },
        select_info: {
            type: 'file',
            category: 'select_info',
            filename: './logs/select_info.log'
        },
        select_error: {
            type: 'file',
            category: 'select_error',
            filename: './logs/select_error.log'
        }
    },
    categories: {
        default: {
            appenders: ['out'],
            level: 'info'
        },
        select_info: {
            appenders: ['select_info'],
            level: 'info'
        },
        select_error: {
            appenders: ['select_error'],
            level: 'error'
        },
    }
});

const logger_info = log4js.getLogger('select_info');
const logger_error = log4js.getLogger('select_error');

// connect config
const client = new cassandra.Client({
    // 若是是遠程數據庫,則將IP和帳號密碼進行相應的更換
    contactPoints: ['127.0.0.1'],
    authProvider: new PlainTextAuthProvider('cassandra', 'cassandra'),
    localDataCenter: 'datacenter1'
});

const query1 = 'select * from test.user;';
const query1 = 'describe keyspaces;';

client.execute(query1, function (err, res) {
    if (err) {
        logger_error.error(err);
    };
    try {
        client.shutdown();
        var str_date = new Date().toLocaleString();
        for (i = 0; i < res.rowLength; i++) {
            console.log(res.rows[i]);
        };
        console.log('select %d successed at time %s', res.rowLength, str_date);
        logger_info.info('select %d successed at time %s', res.rowLength, str_date);
    } catch (error) {
        console.log(error);
        logger_error.error(error);
    };
});

insert

包含一份日誌配置,能夠根據不一樣的日誌級別輸出成文件npm

/**
 * Connect loacal cassandra database and insert data.
 * Output the log as a file '*.log'.
 */
const cassandra = require('cassandra-driver');
var PlainTextAuthProvider = cassandra.auth.PlainTextAuthProvider;

// config log
const log4js = require('log4js');

log4js.configure({
    appenders: {
        out: {
            type: 'console'
        },
        select_info: {
            type: 'file',
            category: 'select_info',
            filename: './logs/select_info.log'
        },
        select_error: {
            type: 'file',
            category: 'select_error',
            filename: './logs/select_error.log'
        }
    },
    categories: {
        default: {
            appenders: ['out'],
            level: 'info'
        },
        select_info: {
            appenders: ['select_info'],
            level: 'info'
        },
        select_error: {
            appenders: ['select_error'],
            level: 'error'
        },
    }
});

const logger_info = log4js.getLogger('select_info');
const logger_error = log4js.getLogger('select_error');

// connect
const client = new cassandra.Client({
    // 若是是遠程數據庫,則將IP和帳號密碼進行相應的更換
    contactPoints: ['127.0.0.1'],
    authProvider: new PlainTextAuthProvider('cassandra', 'cassandra'),
    localDataCenter: 'datacenter1'
});

const query1 = 'insert into test.user (name, age, email) values (?, ?, ?);';
const params1 = ['zzz', 22, 'zzz@22.com'];

client.execute(query1, params1, {
    prepare: true
}, function (err, result) {
    if (err) {
        logger_error.error(err);
    };
    try {
        client.shutdown();
        var str_date = new Date().toLocaleString();
        logger_info.info('insert success at time %s', str_date);
    } catch (error) {
        logger_error.error(error);
    }
});
相關文章
相關標籤/搜索