一、关于安装和启动:

1、设置环境变量:D:\Program Files\MongoDB\bin

2、启动时需要cd到bin 目录,然后 mongod --dbpath "D:\mongdb\data"设置数据库存储路径

二、例子(登录注册表单)

1


2 index.js

var express=require("express"),
bodyParser=require('body-parser'),
multer=require('multer'),
mongoose=require('mongoose'),
cookieParser = require('cookie-parser'),
session = require('express-session'),
app=express(); var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/my-website');
db = mongoose.connection;
db.once('open', function callback () {
console.log("yah");
});
var kittySchema = mongoose.Schema({
first: String,
last: String,
email: {type:String,unique:true},
password:{type:String,index:true}
});
var User = mongoose.model('user', kittySchema); app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
app.use(multer()); // for parsing multipart/form-data
app.use(cookieParser());
app.use(session({
secret: 'my secret',
resave: false,
saveUninitialized: true
})); app.set("view engine","jade"); app.use(function(req,res,next){
if(req.session.loggedIn){
res.locals.authenticated=true;
User.findById(req.session.loggedIn,function(err,doc){ if(err){
return next(err);
}
if(doc){
res.locals.me=doc;
}
next();
});
}else{
res.locals.authenticated=false;
next();
}
}); app.get("/",function(req,res){
res.render('index');
}); app.get("/login",function(req,res){
res.render("login");
}) app.get("/signup",function(req,res){
res.render("signup");
}); app.post("/signup",function(req,res,next){
var user = new User(req.body.user);
user.save(function(err){
if(err) return next(err);
res.redirect("/login/"+user["email"]);
});
}); app.get("/login/:signupEmail",function(req,res){
res.render('login',{signupEmail:req.params.signupEmail});
}); app.post("/login",function(req,res){
User.findOne({"email":req.body.user.email,"password":req.body.user.password},function(err,doc){
if(err){
return next(err);
}
if(!doc){
return res.send("<p>User not found.Go back and try again</p>");
}
var sess=req.session;
req.session.loggedIn=doc._id.toString();
res.redirect("/");
});
}); app.get("/logout",function(req,res){
var sess=req.session;
req.session.loggedIn="",
res.redirect("/");
}); app.listen(3000,function(){
console.log("app listening on *:3000");
});

3 模板 (注意缩进)

3.1 layout.jade

doctype html
html
head
title MongoDB example
body
h1 My first MongoDB app
hr
block body

3.2 index.jade

extends layout
block body
if (authenticated)
p Welcome back,#{me.first}
a(href="/logout") Logout
else
p Welcome new visitor!
ul
li: a(href="/login") Login
li: a(href="/signup") Signup

3.3 login.jade

extends layout
block body
form(action="/login",method="POST")
fieldset
legend Log in
if(signupEmail)
p
Congratulations on signing up! Please login below.
input(name="user[email]",type="text",value=signupEmail)
else
p
label Email
input(name="user[email]",type="text")
p
label Password
input(name="user[password]",type="password")
p
button Submit
p
a(href="/") Go back

3.4 signup.jade

extends layout
block body
form(action="/signup",method="POST")
fieldset
legend Sign
p
label First
input(name="user[first]",type="text")
p
label last
input(name="user[last]",type="text")
p
label Email
input(name="user[email]",type="text")
p
label Password
input(name="user[password]",type="password")
p
button Submit
p
a(href="/") Go back

nodejs 学习(4) express+mongoose的更多相关文章

  1. NodeJS实战:Express+Mongoose+ejs

    元宵还没到,先向所有朋友拜一个晚年~~~ 文章目录: 1.组件版本号 -- --node -- --express -- --Mongoose 2.初始化项目 firstblood -- --用 ex ...

  2. Nodejs学习总结 -Express入门(一)

    Express是基于Node.js平台开发的Web应用开发框架,下面我们入手学习. 官网 : http://www.expressjs.com.cn/ github:https://github.co ...

  3. Nodejs学习总结 -Express 登录注册示例(二)

    项目创建后,我们来做个登录注册实例,详细操作步骤如下. 1.新建项目demo ,具体操作步骤参考上一章内容 https://www.cnblogs.com/Anlycp/ 2.添加mysql和sess ...

  4. nodejs 学习六 express 三种查询url参数方法

    req.param() 是被废弃的api req.params 俗点:取带冒号的参数 req.body 可以肯定的一点是req.body一定是post请求,express里依赖的中间件必须有bodyP ...

  5. nodejs学习(3) express+socket.io

    //node var express=require('express'); var app = express(); var server = require('http').createServe ...

  6. nodeJs学习-07 express、body-parser;链式操作next

    express和body-parser   const express=require('express'); const bodyParser=require('body-parser'); var ...

  7. Nodejs学习笔记(六)--- Node.js + Express 构建网站预备知识

    目录 前言 新建express项目并自定义路由规则 如何提取页面中的公共部分? 如何提交表单并接收参数? GET 方式 POST 方式 如何字符串加密? 如何使用session? 如何使用cookie ...

  8. # nodejs模块学习: express 解析

    # nodejs模块学习: express 解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需要开发者创造大量的轮子 ...

  9. Nodejs学习笔记(六)—Node.js + Express 构建网站预备知识

    前言 前面经过五篇Node.js的学习,基本可以开始动手构建一个网站应用了,先用这一篇了解一些构建网站的知识! 主要是些基础的东西... 如何去创建路由规则.如何去提交表单并接收表单项的值.如何去给密 ...

随机推荐

  1. 记录 Linux分析apache日志获取最多访问的前10个IP

    摘自: http://blog.csdn.net/tanga842428/article/details/52856413

  2. c/c++通用内存泄漏检测框架GMFD(General Memory Fault Detection Framework)

    http://qa.baidu.com/blog/?p=171 1 背景: x86平台有完善的用户态检测内存工具比如valgrind等,可以监控程序运行中详细的内存信息,从而精确定位内存问题.然而随着 ...

  3. android实现文字渐变效果和歌词进度的效果

    要用TextView使用渐变色,那我们就必须要了解LinearGradient(线性渐变)的用法. LinearGradient的参数解释 LinearGradient也称作线性渲染,LinearGr ...

  4. [转]text和content方法的区别

    r.text str #字符串方式的响应体,会自动根据响应头部的 字符编码进行解码 r.content bytes #字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩 reques ...

  5. wiki中文语料+word2vec (python3.5 windows win7)

    环境: win7+python3.5 1. 下载wiki中文分词语料   使用迅雷下载会快不少,大小为1个多G      https://dumps.wikimedia.org/zhwiki/late ...

  6. bootstrap学习大纲

    bootstrap 学习分三部分,分别是 css样式,css组件,js插件. 下面介绍三部分分别要学习的内容: 1.css样式:栅格系统,排版,代码,表格,表单,按钮,图片,辅助类,响应式工具. 2. ...

  7. package-info.java到底是什么

    发现距离上一次在这里写博客已经三个多月了...说好的笔耕不辍呢=.= Anyway,今天(确切说是昨天晚上)在code review中被组里的QA II问到在一个叫做package-info.java ...

  8. bzoj 2600 ricehub

    2600: [Ioi2011]ricehub Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 783  Solved: 417[Submit][Stat ...

  9. bzoj3569

    线性基 非常高端 强制在线动态图 我们先搞出一个dfs树,然后所有非树边都和树边形成一个环.我们考虑什么情况会不连通,当且仅当树边和dfs序大于当前点的返祖边都被断掉才不连通,那么我们给每个非树边赋一 ...

  10. 3.sql中的向上递归和向下递归

    1.向下递归 select * from table_name where 条件 connect by prior bmbm(本级关联条件)=sjbmbm(上级关联条件) start with bmb ...