node.js+express+mongodb

主要是想用node.js链接mongodb,用的是mongoose。用ejs引擎,扩展到.html比较容易

小例子结构简单,框架清晰。

提交方法 路径 方法 作用
get add    
post add   提交记录
get del    
get modify   转到修改页面
post modify   修改记录

入口:mongodb.js,数据模型:model.js,(这两个在同一级目录) 路由:mong_ro.js(引入model.js用../)

三个页面index.html,add.html,modify.html

mongodb.js:

var express = require(‘express‘);
var path = require(‘path‘);
var favicon = require(‘serve-favicon‘);
var logger = require(‘morgan‘);
var cookieParser = require(‘cookie-parser‘);
var bodyParser = require(‘body-parser‘);
var routes = require(‘./routes/mong_ro‘);
var users = require(‘./routes/users‘);

var app = express();

// view engine setup
app.set(‘views‘, path.join(__dirname, ‘views‘));
app.set(‘view engine‘, ‘ejs‘);
app.engine(‘html‘, require(‘ejs‘).renderFile);

// uncomment after placing your favicon in /public
// app.use(favicon(__dirname + ‘/public/favicon.ico‘));
app.use(logger(‘dev‘));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, ‘public‘)));
app.use(‘/‘, routes);
app.use(‘/users‘, users);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
    var err = new Error(‘Not Found‘);
    err.status = 404;
    next(err);
});

// error handlers
// development error handler
// will print stacktrace
if (app.get(‘env‘) === ‘development‘) {
    app.use(function(err, req, res, next) {
        res.status(err.status || 500);
        res.render(‘error‘, {
            message: err.message,
            error: err
        });
    });
}

// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render(‘error‘, {
        message: err.message,
        error: {}
    });
});

module.exports = app;

model.js:

var express = require(‘express‘)
	, routes = require(‘./routes‘)
	, mongoose = require(‘mongoose‘)
	, Schema = mongoose.Schema;

var demoSchema = new Schema({
	uid: String,
	title: String,
	content: String,
	createTime: {type:Date, default: Date.now}
});

exports.Demo = mongoose.model(‘blog‘, demoSchema);

mong_ro.js:

var express = require(‘express‘)
    , router = express.Router()
	, mongoose = require(‘mongoose‘)
	, model = require(‘../model‘)
	, Demo = model.Demo;

mongoose.connect(‘mongodb://localhost/blog‘);

/* GET home page. */
// router.get(‘/‘, function(req, res) {
//   res.render(‘index‘, { title: ‘Express‘ });
// });

router.get(‘/‘, function(req, res) {
  Demo.find(function(err, docs){
		res.render(‘index.html‘, {
			title:‘Express Demo Example‘,
			demos:docs
		});
	});
});

router.get(‘/add‘, function(req, res) {
    res.render(‘add.html‘, {title:‘add demo list‘});
});

router.post(‘/add‘, function(req, res) {
  var demo = new Demo({
		uid: req.body.uid,
		title: req.body.title,
		content: req.body.content
	});
	demo.save(function(err, doc){
		res.redirect(‘/‘);
	})
});

router.get(‘/del‘, function(req, res){
	var id = req.query.id;
	if(id && ‘‘ != id){
		Demo.findByIdAndRemove(id, function(err, docs){
			res.redirect(‘/‘);
		});
	}
});

router.get(‘/modify‘, function(req, res) {
	var id = req.query.id;
	if(id && ‘‘ != id){
		Demo.findById(id ,function(err, docs){
			res.render(‘modify.html‘, {title:‘修改‘, demo:docs});
		});
	}
});

router.post(‘/modify‘, function(req, res) {
  var demo = {
		uid : req.body.uid,
		title: req.body.title,
		content : req.body.content
	};
	var id = req.body.id;
	if(id && ‘‘ != id) {
		Demo.findByIdAndUpdate(id, demo,function(err, docs) {
			res.redirect(‘/‘);
		});
	}
});

//post方法总会先构建demo对象
//demo的方法:find,save,findByIdAndRemove,findById,findByIdAndUpdate
//get请求,用req.query.id;post请求,用req.body.id.

module.exports = router;

add.html:

<!DOCTYPE html>
<html>
  <head>
    <title><%= title %></title>
    <link rel=‘stylesheet‘ href=‘/stylesheets/style.css‘ />
  </head>
  <body>
	<h1>增加</h1>
	<form method="post">
		uid : <input type="text" name="uid"/><br/>
		title:<input type="text" name="title"/><br/>
		content:<textarea name="content"></textarea><br/>
		<input type="submit" value="submit"/>
		<input type="reset" value="reset"/>
	</form>
  </body>
</html>

index.html:

<!DOCTYPE html>
<html>
  <head>
    <title><%= title %></title>
    <link rel=‘stylesheet‘ href=‘/stylesheets/style.css‘ />
	<style type="text/css">
	table { border:1px solid green;}
	table thead tr th{ border:1px solid green;}
	table tbody tr td{ border:1px solid green;}
	</style>
  </head>
  <body>
	<p><a href="http://localhost:3000/add">增加</a></p>
    <h1>DEMO List</h1>
	<table>
		<thead>
			<tr>
				<th>id</th>
				<th>uid</th>
				<th>title</th>
				<th>content</th>
				<th>createTime</th>
				<th>操作</th>
			</tr>
		</thead>
		<tbody>
			<% demos.forEach(function( demo ){ %>
			<tr>
				<td><%=demo._id%></td>
				<td><%= demo.uid %></td>
				<td><%= demo.title %></td>
				<td><%= demo.content %></td>
				<td><%=demo.createTime%></td>
				<td><a href="http://localhost:3000/del?id=<%=demo._id%>">Delete</a> | <a href="http://localhost:3000/modify?id=<%=demo._id%>">Update</a></td>
			</tr>
			<% }); %>
		</tbody>
	</table>
  </body>
</html>

modify.html:

<!DOCTYPE html>
<html>
  <head>
    <title><%= title %></title>
    <link rel=‘stylesheet‘ href=‘/stylesheets/style.css‘ />
  </head>
  <body>
	<h1>修改</h1>
	<form method="post">
		uid : <input type="text" name="uid" value="<%=demo.uid%>"/><br/>
		title:<input type="text" name="title" value="<%=demo.title%>"/><br/>
		content:<textarea name="content"><%=demo.content%></textarea><br/>
		<input type="hidden" name="id" value="<%=demo._id%>"/>
		<input type="submit" value="submit"/>
		<input type="reset" value="reset"/>
	</form>
  </body>
</html>

在此基础上可以不断扩展,把学会的bootstrap加上,把好用的jquery UI加上。

  

时间: 2024-10-15 02:12:03

node.js+express+mongodb的相关文章

基于 Node.js + Express + mongoDB + Bootstrap 搭建的电影网站

电影网站 ?? GitHub: https://github.com/bxm0927/movie-website 此项目是基于 Node.js + Express + mongoDB + Bootstrap 搭建的电影网站. 主要功能模块: 一期:前台电影展示页.电影详情页.后台电影管理中心(电影录入.电影修改) 二期:用户登录注册注销功能.用户识别和持久化.后台用户管理中心(用户录入.用户修改).电影评论 <!-- more --> 图片预览 技术栈 [前端] HTML/CSS/JS:亘古不

Node.js Express+Mongodb 项目实战

Node.js Express+Mongodb 项目实战 这是一个简单的商品管理系统的小项目,包含的功能还算挺全的,项目涵盖了登录.注册,图片上传以及对商品进行增.删.查.改等操作,对于新手来说是个很不错的练手项目,分享给大家. GitHub源码:https://github.com/oceanMin/cms 项目前准备 安装node.js 安装express 安装mongoDB 章节目录 快速开始 快速开始 模块 express商品管理系统介绍 框架搭建.ejs .express.static

Node.js+Express+MongoDB数据库实现网页注册登入功能

通过 Node.js + Express + MongoDB 实现网页注册账号 和 登入账号的功能 项目准备: 1: 事先准备好项目的页面 (首页页面 index.html)(登入页面 login.html) (注册页面 register.html) 2:    安装好 Node.js 需要使用的第三方模板 3:  设计路径设计 4:  理清功能需求 5:  创建 app.js  router.js   mgdb.js 三个 js 文件  和 public 和 views 文件夹 作用: app

【我的笔记BLOG1】配置webstorm + node.js +express + mongodb开发博客的环境

1. 安装webstorm 并破解 2. 安装node (以及express框架) 至官网下载并安装.(http://nodejs.org)v0.10.32   msi 安装后测试,打开命令行, c:\users\Iris804>  node >console.log("hello") 输出 hello undefined 安装node.js 包管理器(Express) ctrl+d, 回到初始窗口,输入  npm install -g express-gengerator

Node.js(express) + MongoDB(mongoose) 简单开发(一)

前言: express作为一个Node框架,很适合新学习Node的同学,加上mongoose的数据处理,堪称完美~ 闲话少说,步入正题. 我的系统环境: Win7 64bit Nodejs: v0.10.35 Npm: 1.4.28 IDE:webstorm 1. 建立项目 Node及express的安装这里就不再赘述,网上有很多安装的教程,不会的同学可以自行查找,这里我们采用express4.x版本 安装express库完成之后,我们可以使用express命令来建立一个自己的项目: expre

Node.js(express) + MongoDB(mongoose) 简单开发(二)

前面说过,做一个真正意义上的登录注册,接下来就让我们一步一步实现吧~ 首先需要安装mongodb,网上有很多安装教程,这里就不再赘述. 安装完成后开始与本地数据库连接,可以参考这里:MongoDB介绍及下载与安装 最后可以安装一个可视化的操作数据库的软件:MongoVUE,配置也很简单: 最后在项目级目录下安装mongoose,安装过程自行百度~ 安装成功后可在node_modules下看见mongoose文件夹 接下来我们测试数据库是否连同: 新建一个models的文件夹,在这里我们对表进行操

ubuntu 安装node.js + express + mongodb

转载自http://my.oschina.net/reg/blog/289536 Ctrl + Alt + T,打开终端,输入以下命令安装: sudo apt-get install nodejs 安装完成后,终端输入nodejs,就能进入node命令啦: 但是正常下应该是输入node进入命令而不是nodejs: 在Ubuntu下node是属于其他应用的,不过继续输入下面的命令安装,完成后就可以使用node进入命令啦. sudo apt-get install nodejs-legacynode

Node.js + Express + Mongodb 开发搭建个人网站(一)

一.Node + Express环境搭建 0.去Node官网下载安装node,如果安装了 npm 和 node的话 那么就 安装 全局的 express,-g全局安装 npm install express –g 1.然后使用 express 创建项目,命令:   express 项目名 初始化一个node项目 注意 这里 默认的页面模版 是jade 大部分小项目使用的是 ejs模版,所以 利用express创建ejs模版的node项目,命令为express -e 项目名 express -e

Node.js + Express + Mongodb 开发搭建个人网站(二)

二.路由 1.打开 routes/index.js ,这个意思就是  捕获到访问主页的get请求: 并通过 app.js 分配到对应的路由里: 看到这里,打开 http://127.0.0.1:3000/users/  来感受一个路由的意思: routes/index.js 文件: 如果我们请求是get,路径是 '/' 那么就是渲染index.ejs这个视图,可以省略后缀名 .ejs: 这个的意思是将数据传到index.ejs中 并输出到页面上. 2.视图 views/index.ejs 可以看