Nodejs操作Cassandra数据库

news/2024/7/8 4:35:49 标签: 数据库, 操作系统

目录

  • 前言
  • 安装Cassandra
  • 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

包含一份日志配置,可以根据不同的日志级别输出成文件

/**
 * 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

包含一份日志配置,可以根据不同的日志级别输出成文件

/**
 * 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);
    }
});

转载于:https://www.cnblogs.com/yun1233/p/10386694.html


http://www.niftyadmin.cn/n/1573796.html

相关文章

数据库建模

什么是数据建模&#xff1f; 就是将现实世界的“事物”和“事物之间的关系”经过抽象、概括&#xff0c;转化为数据仓库中表的过程。 数据建模的本质&#xff1a;眼里只有两张表 那么如何转化呢&#xff1f;只要在进行抽象和概括时&#xff0c;牢记&#xff1a;我们的眼里只有…

win32.udiskvir.spath.b病毒处理

杀毒软件发现svchost.exe病毒&#xff0c;病毒目录是c:\windows\temp&#xff0c;这个文件是仿系统进程&#xff0c;可通过tasklist.exe /svc &#xff5c;findstr “svchost.exe”查找描述列为“暂缺”的&#xff0c;记住pid。 通过任务管理器中止不起作用&#xff0c;删除病毒…

springboot借助aop和注解轻松实现权限安全校验

我们用springboot做后台开发&#xff0c;难免会用到权限校验&#xff0c;比如查看当前用户是否合法&#xff0c;是否是管理员。而spring的面向切面的特效可以帮助我们很好的实现动态的权限校验。这里我们就用到的spring的aop。接下来就带领大家用aop和注解来快速的实现权限校验…

大数据平台层级架构图

主流数据平台架构 一般包含三个层级&#xff0c;ODS层、数据仓库层、数据应用层。 业务系统的操作和日志数据抽取到ODS层&#xff0c;ODS的数据经过ETL过程&#xff08;抽取Extraction&#xff0c;转化Transformation&#xff0c;加载Loading&#xff09;进入数据仓库&#xff…

Taro 多端开发的正确姿势:打造三端统一的网易严选(小程序、H5、React Native)...

前言 笔者所在的趣店 FED 早在去年 10 月份就已全面使用 Taro 框架开发小程序&#xff08;当时版本为 1.1.0-beta.4&#xff09;&#xff0c;至今也上线了 2 个微信小程序、2 个支付宝小程序。 之所以选用 Taro&#xff0c;解决微信小程序原生开发的痛点是一方面&#xff0c;另…

Spring容器 SpringMVC容器 web容器的关系

说到spring和springmvc&#xff0c;其实有很多工作好多年的人也分不清他们有什么区别&#xff0c;如果你问他项目里用的什么MVC技术&#xff0c;他会说我们用的spring和mybatis&#xff0c;或者spring和hibernate。 在潜意识里会认为springmvc就是spring&#xff0c;之前我也是…

事务的提交与回滚

事务的提交与回滚一.事务的概念事务就是某一组操作&#xff0c;要么都执行&#xff0c;要么都不执行。比如你要去银行给朋友转钱&#xff0c;必然存在着从你的账户里扣除一定的金额和向你朋友账户里增加相等的金额这两个操作&#xff0c;这两个操作是不可分割的&#xff0c;无论…

ConurrentHashMap和Hashtable的区别

集合类是Java API的核心&#xff0c;但是我觉得要用好它们是一种艺术。我总结了一些个人的经验&#xff0c;譬如使用ArrayList能够提高性能&#xff0c;而不再需要过时的Vector了&#xff0c;等等。JDK 1.5引入了一些好用的并发集合类&#xff0c;它们对于大型的、要求低延迟的…