nodejs 学习(4) express+mongoose
一、关于安装和启动:
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的更多相关文章
- NodeJS实战:Express+Mongoose+ejs
元宵还没到,先向所有朋友拜一个晚年~~~ 文章目录: 1.组件版本号 -- --node -- --express -- --Mongoose 2.初始化项目 firstblood -- --用 ex ...
- Nodejs学习总结 -Express入门(一)
Express是基于Node.js平台开发的Web应用开发框架,下面我们入手学习. 官网 : http://www.expressjs.com.cn/ github:https://github.co ...
- Nodejs学习总结 -Express 登录注册示例(二)
项目创建后,我们来做个登录注册实例,详细操作步骤如下. 1.新建项目demo ,具体操作步骤参考上一章内容 https://www.cnblogs.com/Anlycp/ 2.添加mysql和sess ...
- nodejs 学习六 express 三种查询url参数方法
req.param() 是被废弃的api req.params 俗点:取带冒号的参数 req.body 可以肯定的一点是req.body一定是post请求,express里依赖的中间件必须有bodyP ...
- nodejs学习(3) express+socket.io
//node var express=require('express'); var app = express(); var server = require('http').createServe ...
- nodeJs学习-07 express、body-parser;链式操作next
express和body-parser const express=require('express'); const bodyParser=require('body-parser'); var ...
- Nodejs学习笔记(六)--- Node.js + Express 构建网站预备知识
目录 前言 新建express项目并自定义路由规则 如何提取页面中的公共部分? 如何提交表单并接收参数? GET 方式 POST 方式 如何字符串加密? 如何使用session? 如何使用cookie ...
- # nodejs模块学习: express 解析
# nodejs模块学习: express 解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需要开发者创造大量的轮子 ...
- Nodejs学习笔记(六)—Node.js + Express 构建网站预备知识
前言 前面经过五篇Node.js的学习,基本可以开始动手构建一个网站应用了,先用这一篇了解一些构建网站的知识! 主要是些基础的东西... 如何去创建路由规则.如何去提交表单并接收表单项的值.如何去给密 ...
随机推荐
- Chapter2——如何分析Android程序
前几天买了<Android软件安全与逆向分析>这本书,决定在这里记一些笔记. 第一章介绍了如何搭建环境,此处略去:第二章开始讲分析Android程序. 下面按顺序记录关键内容. ----- ...
- python 基础之第九天
###############错误和异常######################## 说明:e 是错误的具体原因,else 表示没有异常才会执行else的语句,finally 是无乱有没异常都要执 ...
- 《Objective-C高级编程》の内存管理の学习笔记
此日志用于记录下学习过程中碰到的问题 转载请注明出处: http://www.cnblogs.com/xdxer/p/4069650.html <Objective-C高级编程> 人民邮电 ...
- kafka数据可靠性深度解读【转】
1 概述 Kakfa起初是由LinkedIn公司开发的一个分布式的消息系统,后成为Apache的一部分,它使用Scala编写,以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Cl ...
- 网络应用软件结构-----CS与BS结构(网络基本知识小结)
1.网络的大致结构 2.网络编程 通过直接或间接地使用网络通讯的协议实现计算机与计算机之间的通讯.在TCP/IP协议层主要麦网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的 ...
- 1.17 shell action
一.shell action 1. ##job.properties nameNode=hdfs://hadoop-senior.ibeifeng.com:8020 jobTracker=hadoop ...
- 继承映射关系 subclass的查询
Person大类的映射文件配置 1 <hibernate-mapping package="com.zh.hibernate.subclass"> <class ...
- php防盗链技术
在Http协议中,头信息里,有一个重要的选项: Referer Referer: 代表网页的来源,即上一页的地址 如果是直接在浏览器上输入地址,回来进来,则没有Referer头. 这也是: 为什么服务 ...
- E20180607-hm
duplicate v. 重复; 复制; 复印; adj. 复制的; 副本的; 完全一样的; n. 副本; 完全一样的东西; 复制品; adjacent adj. 相邻; 邻近的,毗邻 ...
- 洛谷 - P3164 - 和谐矩阵 - 高斯约旦消元法
为什么可以跑n立方,我也不知道,反正就是可以. 模2意义的,据说每一行可以存一个bitset,会比用bool更快(快32倍?). 本题告诉我们一个道理: 高斯消元之后,每个变量的含义不变(虽然交换了两 ...