Express生成应用
首先假定你已经安装了Node.js,接下来通过应用生成器工具 express 可以快速创建一个应用的骨架。
通过如下命令安装express和express-generator:
当前工作目录下创建一个命名为 myapp 的应用:
然后安装所有依赖包:
|
|
启动这个应用(MacOS 或 Linux 平台):
|
|
Windows 平台使用如下命令:
|
|
然后在浏览器中打开 http://localhost:3000/ 网址就可以看到这个应用了。
通过 Express 应用生成器创建的应用一般都有如下目录结构:
MySQL数据库
连接本地数据库
安装navicat和MySQL。
进入【系统偏好设置】启动本地mysql服务:
在navicat中连接本地数据库:
创建数据库
创建一个测试数据库nodesample,在数据库中建一个userinfo表
node连接数据库
Node.js与MySQL交互操作有很多库,这里选择felixge/node-mysql。
安装mysql模块
打开routes/users.js
,引入mysql模块
建立连接
实现RESTFUL接口
增
1234567891011/** PUT to updateuser.*/router.put('/updateuser/:id', function(req, res) {var userUpSql = 'UPDATE userinfo SET ? WHERE Id='+req.params.id;connection.query(userUpSql, req.body, function(err, result) {res.send((err === null) ? { msg: '' } : { msg: err });});});删
123456789/** DELETE to deleteuser.*/router.delete('/deleteuser/:id', function(req, res) {var userDelSql = 'DELETE FROM userinfo where Id='+req.params.id;connection.query(userDelSql, function (err, result) {res.send((err === null) ? { msg: '' } : { msg:'error: ' + err });});});改
12345678910/** POST to adduser.*/router.post('/adduser', function(req, res) {connection.query('INSERT INTO userinfo SET ?', req.body, function(err, result) {res.send((err === null) ? { msg: '' } : { msg: err });});});查
123456789/* GET users listing. */router.get("/userlist",function(req,res){connection.query('SELECT * from userinfo', function(err, rows, fields) {if (!err)res.json(rows);elseconsole.log('Error while performing Query.');});});
画页面
在public/javascripts中新建global.js,并打开views/layout.jade,
在末尾引入jquery和global.js。
打开views/index.jade,写好页面结构:
样式写在public/stylesheets/style.css里,可以看我放到github上的源码。
调用接口
在上面新建的global.js里编写调用接口的代码
查数据并画表格
123456789101112131415function populateTable() {var tableContent = '';$.getJSON( '/users/userlist', function( data ) {userListData = data;$.each(data, function(){tableContent += '<tr>';tableContent += '<td><a href="#" class="linkshowuser" rel="' + this.UserName + '" title="Show Details">' + this.UserName + '</a></td>';tableContent += '<td>' + this.UserPass + '</td>';tableContent += '<td><a href="#" class="linkdeleteuser" rel="' + this.Id + '">delete</a></td>';tableContent += '<td><a href="#" class="linkupdateuser" rel="' + this.Id + '">edit</a></td>';tableContent += '</tr>';});$('#userList table tbody').html(tableContent);});};增
12345678910111213141516171819202122232425262728293031323334function addUser(event) {event.preventDefault();// 每个输入框必填var errorCount = 0;$('#addUser input').each(function(index, val) {if($(this).val() === '') { errorCount++; }});if(errorCount === 0) {var newUser = {'UserName': $('#addUser fieldset input#inputUserName').val(),'UserPass': $('#addUser fieldset input#inputUserPass').val()};$.ajax({type: 'POST',url: '/users/adduser',data: newUser,dataType: 'JSON'}).done(function( response ) {if (response.msg === '') {// Clear the form inputs$('#addUser fieldset input').val('');// Update the tablepopulateTable();}else {alert('Error: ' + response.msg);}});}else {alert('Please fill in all fields');return false;}};删
1234567891011121314151617181920212223function deleteUser(event) {event.preventDefault();// 确定删除吗var confirmation = confirm('Are you sure you want to delete this user?');if (confirmation === true) {$.ajax({type: 'DELETE',url: '/users/deleteuser/' + $(this).attr('rel')}).done(function( response ) {if (response.msg === '') {}else {alert('Error: ' + response.msg);}populateTable();});}else {return false;}};改
1234567891011121314151617181920212223242526272829303132function updateUser(event) {event.preventDefault();// 每个输入框必填var errorCount = 0;$('#upUser input').each(function(index, val) {if($(this).val() === '') { errorCount++; }});if(errorCount === 0) {var upUser = {'UserName': $('#upUser fieldset input#modUserName').val(),'UserPass': $('#upUser fieldset input#modUserPass').val()};$.ajax({type: 'PUT',url: '/users/updateuser/' + $('#upUser fieldset input#modId').val(),data: upUser,dataType: 'JSON'}).done(function( response ) {if (response.msg === '') {$('.mask').hide();$('.alert').hide();populateTable();}else {alert('Error: ' + response.msg);}});}else {return false;}};
完整的代码可以去github上查看,以下是最终效果:
参考文章
express
用NODE.JS,EXPRESS,MONGODB创建一个简单的RESTFUL WEB APP