node.js中的cassandra-driver操作

根據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 onclick="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 onclick="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" onclick="stream()">stream 操作</a>
        <a href="javaScript:void(0)" class="btn btn-primary" role="button" onclick="eachRow()">eachRow 操作</a>
        <a href="javaScript:void(0)" class="btn btn-primary" role="button" onclick="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()
        })
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章