node.js + mongodb 原

想写博客很长时间了,因为一直身患懒癌,所以一直拖到了现在。markdown的语法也是刚刚学,试验一下效果 好了不说了,直接上干货了。 ------------------------------------------------------------------------------------------------

1.准备工作

Nodejs、express和mongodb的安装(这里安装的都是最新版的)

### 安装: ### Nodejs的安装没什么说的。不过安装完之后测试是否成功用过原来版本的同学可能会有一些问题。 原来的版本是:$ node -v 新版不在支持$,直接在命令行中:node -v

安装最新版的express之后,需要在安装:express-generator //express命令工具,很多初学者都会遇到这个问题(当然我也是) mongodb的安装下面会讲解到。

用express创建一个项目的框架。 

这个我创建一个名字叫chihou的网站,用的模板引擎是ejs。

>express -e chihuo

-e表示ejs模板引擎,不写 -e 默认的创建jade模板引擎

然后在输入:     cd chihuo //进入到你创建的项目目录     npm install //读取根目录中的package.json文件然后安装项目所依赖的包

然后通过cmd命令行 cd 到 chihuo 的目录下  >node app

这样就启动项目了。

提示1:如果不能启动项目:看看app.js文件中没有监听端口。如果没有, 在 module.exports = app; 语句之前添加app.listen(3000);

提示2:Ctrl + c 终止运行

然后我们可以在浏览器地址栏里敲入 http://127.0.0.1:3000/ 或者 http://localhost:3000  这就是你的第一个express创建的node app。

到这里你就完成了项目的重要的一步。

之后的讲解 我们从目录开始

--node_modules 项目中依赖的包 --public 公共资源放的目录 --routes 学名 路由,里面放着一些路由文件 --views 放着就是页面文件了 --app.js 项目的入口文件。当然你也可以改成其他的名字。

2.现在基本的结果已经有了,之后就是创建数据库了

mongodb的安装

这里只介绍window的安装 在官网上下载zip,这个我装在D盘的mongodb目录下

1.在D盘中创建mongodb文件夹然后把下载的包解压后把其中的bin文件夹拷贝到创建的mongodb文件夹中, 2.然后在mongodb文件夹中创建一个data文件夹,再在data文件夹中创建db文件夹 3.打开CMD命令行 >d: >cd mongodb\bin >mongod -dbpath D:\mongodb\data\db 4.在打开一个CMD命令行: >d: >cd mongodb\bin >mongo 5.这样就可以用了。

接着就设计我们的数据库了

在刚才的打开的mongodb数据库中输入: >use chihuo \\创建一个叫chihuo的数据库 >db.createCollection("users") \\创建一个集合 >db.users.insert({"name":"admin","password":"111"}) \\给users集合添加一个文档。 >db.users.find() \\查询你添加的文档

再接着就是在项目中连接刚才创建的数据库了

在项目根目录下创建一个的文件夹database,然后在创建一个

db.js

 var mongoose = require('mongoose');
 var db = mongoose.connect('mongodb://localhost/chihuo');//;连接数据库
 var Schema = mongoose.Schema; // 创建模型
 var userScheMa = new Schema({5 name: String,6 password: String7 }); // 定义了一个新的模型,但是此模式还未和users集合有关联
 exports.user = db.model('users', userScheMa); // 与users集合关联

3.接着在views文件夹创建视图文件了

我们上面用express创建的项目视图文件是ejs后缀名,我们一般习惯使用html后缀名。 那么我们怎么让他识别html的视图文件呢?

在app.js文件中 找到 >app.set('view engine', 'ejs'); 把它替换成: >app.set( 'view engine', 'html' ); 再用app.engine()方法注册模板引擎的后缀名。代码: >app.engine('.html',require('ejs').__express);//里面的下划线是两个

然后我们创建一个login.html(登陆页面),index.html(原来有,改一下后缀名就行),ucenter(登陆之后的页面);

index.html--
<!DOCTYPE html>
<html>
  <head>
	<title><%= title %></title>
	<link rel='stylesheet' href='/stylesheets/style.css' />
  </head>
  <body>
	<h1>Hello World</h1>
	<p>Welcome to <%= title %></p>
	<p><a href="login">登陆</a></p>
  </body>
</html>
login.html--
	<!DOCTYPE html>
	<html>
	  <head>
		<title><%= title %></title>
		<link rel='stylesheet' href='/stylesheets/style.css' />
	  </head>
	  <body>
		<h1>Hello World</h1>
		<form action="ucenter" method="post">
			<p>name:<input type="text" name="name" id="name" /></p>
			<p>password:<input type="text" name="password" id="password" /></p>
			<p><input type="submit" value="submit" /></p>
		</form>
	  </body>
	</html>
ucenter.html--
	<!DOCTYPE html>
	<html>
	  <head>
		<title><%= title %></title>
		<link rel='stylesheet' href='/stylesheets/style.css' />
	  </head>
	  <body>
		<p>登陆成功</p>
	  </body>
	</html>

 4.最后就是路由的控制了,在routes文件中的index.js 

 var express = require('express'); 
 var router = express.Router(); 
 var user = require('../database/db').user; 

  /* GET home page. */ 
   router.get('/', function(req, res) {
       res.render('index', { title: 'index' });
   });
     
   /*login*/
   router.get('/login', function(req, res) {
     res.render('login', { title: 'login' });
   });
   
   /*ucenter*/
   router.post('/ucenter', function(req, res) {
     var query = {name: req.body.name, password: req.body.password};
     (function(){
       user.count(query, function(err, doc){
         if(doc == 1){
           console.log(query.name + ": 登陆成功 " + new Date());
           res.render('ucenter', { user:doc });
         }else{
           console.log(query.name + ": 登陆失败 " + new Date());
           res.redirect('/');
         }
       });
     })(query);
   });31 32 module.exports = router;

目前就讲解这么多,之后的博客我会讲解最新版本的session问题还有前台页面中应用到bootstrap等等,不断的把项目完善。

github地址:https://github.com/songtanjichuan/chihuo_0.0.1.git

mongoose参考地址:http://www.hubwiz.com/course/543b2e7788dba02718b5a4bd

如果觉得还不错,求推荐。转载的话,请加原文链接。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏LhWorld哥陪你聊算法

【常见错误】--Nltk使用错误

AttributeError: module 'nltk' has no attribute 'word_tokenize'

3042
来自专栏JadePeng的技术博客

Jupyter notebook安装与使用

Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。 安装 安装python...

3916
来自专栏从零开始的linux

tomcat redis nginx session共享

使用Nginx作为Tomcat的负载平衡器,Tomcat的会话Session数据存储在Redis,能够实现零宕机的7x24效果。因为将会话存储在Redis中,因...

4263
来自专栏雨过天晴

转 Mac OS/Linux命令查询网络端口占用情况

1403
来自专栏云计算教程系列

在Linux中使用find命令行查找文件

find是一个基于条件机制递归过滤文件系统中对象的命令。使用find搜索文件系统中的文件或目录。使用-exec标志,可以在同一命令中找到并立即处理文件。

1242
来自专栏小白安全

小白博客 linux常用操作命令

常用指令 ls   显示文件或目录      -l 列出文件详细信息l(list)      -a 列出当前目录下所有文件及目录,包括隐藏的a...

2947
来自专栏我的技术专栏

vi 方向键和Backspace键失效问题的解决方法

982
来自专栏HaHack

化繁为简的企业级 Git 管理实践(一):多分支子模块依赖管理

1612
来自专栏流浪猫的golang

go test 使用全教程

golang 中的go test 为golang 软件包提供了一种单元测试方式,非常简单的同时也非常好用。 ok 先来看看怎么用? 1. 新建go 文件...

944
来自专栏Java成神之路

Oracle_Exception_01_The Network Adapter could not establish the connection

端口号错误:一般不会错误但可能使用多个oracle版本,导致端口号为1521的情况。  修改为正确的端口号,执行下面第2步。   

882

扫码关注云+社区

领取腾讯云代金券