根据github上的cassandra-driver模块编译的增删改查操作,采用的是express框架,以下是部分代码:
routes/index.js
"use strict";
var express = require('express');
var router = express.Router();
var cassandra = require('cassandra-driver');
var assert = require('assert');
var client = new cassandra.Client({ contactPoints: ['localhost'],keyspace: 'demo'});
//检查是否连接成功
client.connect(function (err) {
if (err) {
client.shutdown();
return console.error('There was an error when connecting', err);
}
console.log('Connected to cluster with %d host(s): %j', client.hosts.length, client.hosts.keys());
console.log('Keyspaces: %j', Object.keys(client.metadata.keyspaces));
});
//查询
router.get('/', function(req, res, next) {
client.execute('select * from test', function (err, result) {
if (err) {
return console.error('There was while trying to retrieve data from system.local', err);
}else {
var row = result.rows[0]
res.render('index',{result:result.rows});
}
});
});
//增
router.get('/insert', function(req, res, next) {
req.setEncoding("utf8");
console.log("获得的数据为:"+req.query.id);
var query='insert into demo.test(id,name,address,age) values (?,?,?,?)';
var params =[Number(req.query.id),req.query.name,req.query.address,parseInt(req.query.age)];
client.execute(query,params,{prepare:true}, function(err) {
if (err) throw err;
console.log("Delete success.....");
res.end(JSON.stringify("增加成功!"));
});
/* var result = params.map(function(param){
return typeof param;
});
res.end(JSON.stringify(result)); */
});
/*
router.get('/inserts', function(req, res, next) {
var queries= [
{
query:'insert into test(id,name,address,age) values (?,?,?,?)',
params: [req.query.id,req.query.name,req.query.address,req.query.age]
}
];
client.batch(queries,{prepare:true}, function(err,result) {
if (err) throw err;
console.log("insert success....."+result.rows[0]);
});
});
*/
//删
router.get('/delete', function(req, res, next) {
var query='delete from test where id=?';
var params =[Number(req.query.id)];
client.execute(query,params,{prepare:true}, function(err) {
if (err) throw err;
console.log("Delete success.....");
res.end(JSON.stringify("删除成功!"));
});
});
//改
router.get('/update', function(req, res, next) {
var query='update test set name=?, address=?, age=? where id=?';
var params =[req.query.name,req.query.address,Number(req.query.age),Number(req.query.id)];
client.execute(query,params, { prepare: true }, function(err, result) {
if (err) throw err;
console.log("got message with:"+result);
res.end(JSON.stringify("修改成功!"));
});
});
router.get('/eachRow', function(req, res, next) {
client.eachRow('select * from test',
function(n, row) {
// The callback will be invoked per each row as soon as they are received
console.log(row);
res.end(JSON.stringify(row));
},
function (err) {
assert.ifError(err);
}
);
});
router.get('/eachRow2', function(req, res, next) {
client.eachRow('select * from test',[],{autoPage: true},
function(n, row) {
// This function will be invoked per each of the rows in all the table
res.end(JSON.stringify(row))
});
});
router.get('/stream', function(req, res, next) {
client.stream('select * from test')
.on('readable', function () {
// 'readable' is emitted as soon a row is received and parsed
var result;
while (result = this.read()) {
console.log('id %s and name %s and address %s and age %s', result.id, result.name,result.address,result.age);
}
})
.on('end', function () {
// Stream ended, there aren't any more rows
res.end("end");
client.shutdown();
})
.on('error', function (err) {
// Something went wrong: err is a response error from Cassandra
});
});
module.exports = router;
views/index.ejs
<!DOCTYPE html>
<html>
<head>
<title>cassandra测试用例又来了(┬_┬)</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">
<script type="text/javascript" src='javascripts/jquery-2.1.1.min.js' charset="utf-8"></script>
<script type="text/javascript" src='javascripts/easyui.min.js' charset="utf-8"></script>
<script type="text/javascript" src='javascripts/index.js' charset="utf-8"></script>
</head>
<body>
<div class="container-fluid">
<form class="form-inline">
<div class="form-group">
<label for="id">编号</label>
<input type="text" class="form-control" id="id" title="编号" placeholder="编号"/>
</div>
<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">
<table class="table table-striped">
<tr><th>编号:</th> <th>姓名:</th> <th>地址:</th> <th>年龄:</th></tr>
<% for(var i = 0; i < result.length; i++) { %>
<td><%= result[i].id %></td>
<td><%= result[i].name %></td>
<td><%= result[i].address %></td>
<td><%= result[i].age %></td>
<td><a οnclick="deletes(<%= result[i].id %>)" href="javaScript:void(0)" id="<%= result[i].id %>"
name="delete">删除</a></td>
</tr>
<tr>
<td></td>
<td><input type="text" id="rname_<%= result[i].id %>"/></td>
<td><input type="text" id="raddress_<%= result[i].id %>"/></td>
<td><input type="number" id="rage_<%= result[i].id %>"/></td>
<td><a οnclick="update(<%= result[i].id %>)" href="javaScript:void(0)" id="<%= result[i].id %>" name="update">修改</a>
</td>
</tr>
<% } %>
</table>
</div>
<div class="container-fluid">
<a href="javaScript:void(0)" class="btn btn-primary" role="button" οnclick="stream()">stream 操作</a>
<a href="javaScript:void(0)" class="btn btn-primary" role="button" οnclick="eachRow()">eachRow 操作</a>
<a href="javaScript:void(0)" class="btn btn-primary" role="button" οnclick="eachRow2()">eachRow2 操作</a>
</div>
</body>
</html>
public/javascript/index.js
$(function () {
$("#set").click(
function () {
var id = $.trim($("#id").val());
var name = $.trim($("#name").val());
var age = $.trim($("#age").val());
var address = $.trim($("#address").val());
console.log(id);
console.log(name);
//$.get(url,[data],[callback])
$.get("/index/insert/",
{
'id': id,
'name': name,
'age': age,
'address': address
},
function (jsons) {
alert(jsons);
window.location.reload();
}
)
/*
$.ajax({
url:'/index/insert/',
type:'GET',
error:function(){
alert("Something wrong!");
},
success:function(jsons){
alert(jsons);
window.location.reload();
}
});*/
});
});
function eachRow() {
$.get("/index/eachRow/", {
},
function (jsons) {
alert(jsons);
// window.location.reload();
}
)
}
function eachRow2() {
$.get("/index/eachRow2/", {
},
function (jsons) {
alert(jsons);
}
)
}
function stream() {
$.get("/index/stream/", {
},
function (jsons) {
alert(jsons);
}
)
}
function deletes(ide) {
$.get("/index/delete/", {
'id': ide
},
function (jsons) {
alert(jsons);
window.location.reload()
})
}
function update(ide) {
var name = $.trim($("#rname_" + ide).val());
var age = $.trim($("#rage_" + ide).val());
var address = $.trim($("#raddress_" + ide).val());
$.get("/index/update/", {
'id': ide,
'name': name,
'age': age,
'address': address
},
function (jsons) {
alert(jsons);
window.location.reload()
})
}