node.js中的cassandra-cql操作

根据github提供的apI编写,使用的是express框架吐舌头

cql.js

var express = require('express');
var router = express.Router();
var cql = require('node-cassandra-cql');
var client = new cql.Client({hosts:['localhost:9042','localhost:9160'],keyspace: 'demo'});
/* GET users listing. */
router.get('/', function(req, res, next) {
        client.execute('SELECT * FROM test where id=?', [1],
    function(err, result){
      if (err){
        console.log('execute failed');
      }
      else {
        console.log('got user profile with users ');
        console.log(result.rows[0].name);
        res.render('cql',{result: result.rows[0],title: 'execute'});
      }
    }
  );
});


router.get('/executeAsPrepared', function(req, res, next) {
  var query = 'select id,name,address,age from demo.test where id=?';
  var params = [2];
  var consistency = cql.types.consistencies.quorum;
  client.executeAsPrepared(query, params, consistency, function(err,result) {
    if (err) console.log('Something when wrong and the row was not selected');
    else {
      console.log('select on the cluster name %s address %s',result.rows[0].name,result.rows[0].address);
      res.render('cql',{result: result.rows[0],title: 'executeAsPrepared'});
    }
  });
});

//版本驱动不支持
router.get('/executeBatch', function(req, res, next) {
  var userId = cql.types.uuid();
  var messageId = cql.types.uuid();
  var queries = [
    {
      query: 'INSERT INTO demo.test (id, name,address,age) values (?, ?)',
      params: [userId, 'Zoro','beijing',25]
    }
  ];
  var consistency = cql.types.consistencies.quorum;
  client.executeBatch(queries, consistency, function(err,result) {
    if (err) console.log('The rows were not inserted on the cluster');
    else {
      console.log('Data updated on cluster',result.rows[0].name);
      //res.render('cql',{result: result.rows[0]});
    }
  });
});

router.get('/eachRow', function(req, res, next) {
  client.eachRow('select id,name,address,age from demo.test where id=?', [2],
  function(n, result) {
    //the callback will be invoked per each result as soon as they are received
    console.log('name value', n, result.name);
    res.render('cql',{result: result,title: 'eachRow'});
var express = require('express');
var router = express.Router();
var cql = require('node-cassandra-cql');
var client = new cql.Client({hosts:['localhost:9042','localhost:9160'],keyspace: 'demo'});
/* GET users listing. */
router.get('/', function(req, res, next) {
        client.execute('SELECT * FROM test where id=?', [1],
    function(err, result){
      if (err){
        console.log('execute failed');
      }
      else {
        console.log('got user profile with users ');
        console.log(result.rows[0].name);
        res.render('cql',{result: result.rows[0],title: 'execute'});
      }
    }
  );
});


router.get('/executeAsPrepared', function(req, res, next) {
  var query = 'select id,name,address,age from demo.test where id=?';
  var params = [2];
  var consistency = cql.types.consistencies.quorum;
  client.executeAsPrepared(query, params, consistency, function(err,result) {
    if (err) console.log('Something when wrong and the row was not selected');
    else {
      console.log('select on the cluster name %s address %s',result.rows[0].name,result.rows[0].address);
      res.render('cql',{result: result.rows[0],title: 'executeAsPrepared'});
    }
  });
});

//版本驱动不支持
router.get('/executeBatch', function(req, res, next) {
  var userId = cql.types.uuid();
  var messageId = cql.types.uuid();
  var queries = [
    {
      query: 'INSERT INTO demo.test (id, name,address,age) values (?, ?)',
      params: [userId, 'Zoro','beijing',25]
    }
  ];
  var consistency = cql.types.consistencies.quorum;
  client.executeBatch(queries, consistency, function(err,result) {
    if (err) console.log('The rows were not inserted on the cluster');
    else {
      console.log('Data updated on cluster',result.rows[0].name);
      //res.render('cql',{result: result.rows[0]});
    }
  });
});

router.get('/eachRow', function(req, res, next) {
  client.eachRow('select id,name,address,age from demo.test where id=?', [2],
  function(n, result) {
    //the callback will be invoked per each result as soon as they are received
    console.log('name value', n, result.name);
    res.render('cql',{result: result,title: 'eachRow'});
  },
  function (err, resultLength) {
    if (err) console.log('Oh dear...');
    console.log('%d rows where returned', resultLength);
  }
);
});

router.get('/streamField', function(req, res, next) {
  client.streamField('select id,name from demo.test where id=?', [3],
  function(err, result, photoStream) {
    //the callback will be invoked per each result as soon as they are received.
    if (err) console.log('Shame...');
    else {
      //The stream is a Readable Stream2 object
      //stdout.pipe(photoStream);
      console.log(result);
      res.send(result);
    }
  });
});

// Streaming query rows
router.get('/streamRows', function(req, res, next) {
 client.streamRows('select id,name,address,age from demo.test where id=?', [4],
  function(err, result) {
    //the callback will be invoked per each row as soon as they are received
    if (err) console.log("Oh dear...That wrong");
    else {
      console.log('streamRows name value', result.name);
      res.render('cql',{result: result,title: 'streamRows'});
    }
  });
});

router.get('/stream', function(req, res, next) {
 client.stream('select id,name,address,age from demo.test where id=?', [5])
  .on('readable', function () {
    //readable is emitted as soon a row is received and parsed
    var result;
    while (result = this.read()) {
      console.log('name %s and age %s', result.name, result.age);
      res.render('cql',{result: result,title: 'stream'});
    }
  })
  .on('end', function () {
    //stream ended, there aren't any more rows
  })
  .on('error', function (err) {
      console.log(err);
  });
});

module.exports = router;
                          

cql.ejs:

<!DOCTYPE html>
<html>
<head>
    <title>cassandra-cql测试用例(┬_┬)</title>
    <link rel='stylesheet' href='/stylesheets/style.css'/>
    <link rel='stylesheet' href='/stylesheets/bootstrap.css'/>
    <link rel='stylesheet' href='/stylesheets/bootstrap-theme.css'/>
    <link rel="stylesheet" type="text/css" href="/stylesheets/themes/bootstrap/easyui.css">
    <link rel="stylesheet" type="text/css" href="/stylesheets/themes/icon.css">
</head>
<body>
<div class="container-fluid">
    <form class="form-inline">
        <div class="form-group">
            <label for="name">姓名</label>
            <input type="text" class="form-control" id="name" title="姓名" placeholder="请输入姓名"/>
        </div>
        <div class="form-group">
            <label for="age">年龄</label>
            <input type="number" class="form-control" id="age" placeholder="请输入年龄"/>
        </div>
        <div class="form-group">
            <label for="address">地址</label>
            <input type="text" class="form-control" id="address" placeholder="请输入地址"/>
        </div>
        <button type="button" id="set" class="btn btn-primary">提交数据</button>
    </form>
</div>
<br>

<div class="container-fluid">
    <h1><%= title%></h1>
    <table class="table table-striped">
        <tr>
            <th>编号:</th>
            <th>姓名:</th>
            <th>地址:</th>
            <th>年龄:</th>
        </tr>
        <tr>
            <td><%= result.id%></td>
            <td><%= result.name %></td>
            <td><%= result.address %></td>
            <td><%= result.age %></td>
        </tr>
    </table>
</div>
</body>
</html>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值