使用node.js ,Express, 和Mongodb 简历一个简单的Restful 网页服务-part1
来源:互联网 发布:乐高编程软件手机 编辑:程序博客网 时间:2024/05/16 19:15
使用node.js ,Express, 和Mongodb 简历一个简单的Restful 网页服务-part1
这个实现的基础是《使用handlebars 代替Jade 使用Express》 ,或者可以直接下载开始的源码,根据下面的步骤进行编辑
$ git clone https://susan200893171@bitbucket.org/susan200893171/node-js-example.git $ cd node-js-exmaple ;git checkout jadeToHandlebars$ cd node-js-example$ npm install$ npm start
在这篇文章中,主要是记录如何使用mongoose,添加数据,handlebars 的一些基本的使用。
为了比较清楚的了解,首先创建页面
因为这边文章主要是针对nodejs Express, mongoose讲解,你可以直接粘贴下面的代码到相应的文件里 。
1、 进入 views/layouts , 编辑main.handlebars,
<head> <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <script type="text/javascript" src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script></head>
2、 在views 文件夹中创建users.handlebars
<script type="text/javascript" src="/javascripts/users.js"></script><div class="container"> <div class="row"> <div class="col-sm-6"> <div id="addUserForm"> <h1>Add New User</h1> <form role="form"> <div class="form-group"> <label for="name">Name:</label> <input type="text" id="username" class="form-control" name=name> </div> <div class="form-group"> <label for="email">Email:</label> <input type="email" id="useremail" class="form-control" name="email"> </div> <button type="button" class="btn btn-default" id="add" name="Add">添加</button> </form> </div> <div id="showUserInfo"> <!--之后添加--> </div> </div> <div class="col-sm-6"> <h1> Show the User's information</h1> <div class="table-responsive"> <table class="table" id="usersTable"> <thead> <th>Name</th> <th>Email</th> <th>Delete?</th> </thead> <tbody> {{#each users}} <tr> <td><a href="#" rel="{{name}}">{{name}}</a></td> <td>{{email}}</td> <td><a href="#" rel="{{_id}}">Delete?</a></td> </tr> {{/each}} </tbody> </table> </div> </div></div>
3、 在public/javascripts/ 文件夹中,建立users.js 文件,这个是在users.handlebars 第一行中引用的文件,因为在app.js 文件中我们引用了app.use(express.static(path.join(__dirname, 'public')));
users.js 文件内容如下,如果没有javascripts 文件夹,直接创建:
$ mkdir javascripts
$(document).ready(function(){ $('#add').on('click',addUser);});function addUser(event){ event.preventDefault(); var newUser = { name:$("#username").val(), email:$("#useremail").val(), }; console.log('new user='+newUser); //use AJAX to post object to our adduser service $.ajax({ type:'POST', data: newUser, url : '/users/adduser', dataType:'JSON' }).done(function(response){ console.log(response); if(response.message === ''){ //post correct , //刷新数据 {{uses}} window.location.href='/users/'; }else{ }; });}
添加的数据格式是{name:…,email:…}
4、 使用mongoose 对数据库进行操作。
在MongoDB 在mac上安装已经讲解了如何安装。
创建data文件夹启动数据库
$mkdir data$cd data$mongod --dbpath .
我建立一个credentials.js 文件,保留一些配置文件,之后可以添加其他的一个配置,现在只是数据库的url
module.exports={ database:{ url:'mongodb://127.0.0.1:27017/blog', },}
因为是使用mongoose,首先安装mongoose
$npm install --save mongoose
我建立一个models文件保存数据的格式
$ mkdir models $ cd models$ touch user.js
mongodb是使用shema来确定数据库的格式,在/public/javascripts/users.js 中ajax post newUser 的格式是{name,email} ,所以models/user.js 的内容
var mongoose = require('mongoose');var userSchema = mongoose.Schema({ name:String, email:String,});var User = mongoose.model('User',userSchema);module.exports = User;
建立完数据格式,我们需要把express 和数据库链接起来。
打开app.js 文件,添加如下代码:
var mongoose = require('mongoose');var credentials = require('./credentials.js');mongoose.connect(credentials.database.url);
5 、 数据库连接之后,我们需要对路径/users 进行操作,因为在app.js 中
var users = require('./routes/users');app.use('/users',users);
所以进入routes 文件夹打开 users.js 文件
$ vi routes/users.js
因为在routes/users.js文件中有对数据库操作,所以添加
var User = require('../models/user.js');
首先为了得到如图片所示的界面,首先对 get(‘/’,function(req,res)) 进行编辑
router.get('/',function(req,res){ //因为在文件views/users.handlebars中{{#each users}} 所以需要访问数据库得到所有的users User.find(function(err,docs){ if(err){ res.send({message:err}); }else{ res.render('users',{users:docs}); } });});
添加完这段之后,可以运行,之后出现如图的界面
$ npm start
在添加user的是,ajax post 操作,所以需要添加 post /users/adduser , 添加如下代码
router.post('/adduser',function(req,res){ var body=req.body; var newUser = new User({ name:body.name, email:body.email }); newUser.save(function(err){ if(err){ //if there is some error ,when saving into the database //send back to error res.send({message:err}); }else{ //insert sucessfully, send back nothing res.send({message:'',newUser:newUser}); } });});
之后运行
$ npm start
完整的这部分代码:
$ git clone https://susan200893171@bitbucket.org/susan200893171/node-js-example.git $ cd node-js-example$ git checkout mongoose$ npm install $ npm start
然后打开browser , 输入http://localhost:3000/users/
- 使用node.js ,Express, 和Mongodb 简历一个简单的Restful 网页服务-part1
- Ubuntu12.04 Node.js MongoDb 和 express框架的搭建
- 使用Node.js + MongoDB 构建restful API
- 为一个 iOS 应用编写一个简单的 Node.js/MongoDB Web 服务
- 搭建简单的node+express+mongodb项目
- 使用Node.js和MongoDB通过Mongoshin和Express.js构建JSON REST API服务器
- 使用 Angular.js, Node.js 和 MongoDB开发简单案例
- Node.js+Express+MongoDB实现简单登录注册功能
- Express + MongoDB 搭建一个多人博客(node.js实战)
- Node.js + Express + MongoDB教程
- Node.js + Express + MongoDB教程
- 安装node js+express+mongodb
- 使用Node.js + MongoDB实现一个简单的日志分析系统
- 使用Node.js + MongoDB实现一个简单的日志分析系统
- 使用Node.js + MongoDB实现一个简单的日志分析系统
- 60分钟学会使用Node.js+Express+Ejs+mongoDB
- node.js 之 express框架+MongoDB(前端使用vue)
- Node.js学习(一)——Node.js的安装和express初步使用
- 为Apple立起死亡flag
- 两款天气预报APP产品分析
- Android开发之旅:;HelloWorld项目的目录结构; android架构
- js实现跨浏览器好友列表
- Android数据存储和访问
- 使用node.js ,Express, 和Mongodb 简历一个简单的Restful 网页服务-part1
- Objective-C(四、属性声明与功能,点语法)——iOS开发基础
- Linux ls 命令
- lua5.3 和 vs2010 环境搭建
- CentOS 6.6编译安装LAMP(Apache2+PHP+Mysql+PHPmyAdmin)
- nginx方面的书籍
- 解决C++与object-c混合编译
- Xcode_真机调试证书生成、设置、应用
- window的代码源文件放到mac上注意事项