Nodejs+Express+MongoDB完整案例研究 (2)

nodejs实战案例(Express框架+mongoDB)————安装框架,数据库,插件以及数据库连接

1. 首先安装好最基本的nodejs和mongodb

nodejs很好安装:http://www.nodejs.org 直接官网install安装到本机


mongodb相比nodejs麻烦一点:http://www.mongodb.org 直接安装,然后需要打开终端指定数据存储目录(这里建议百度和google搜索一下安装教程,我这里当时折腾了一会才弄好,开启自动启动我还不会弄,所以我每次都是手动启动)

手动启动办法很简单:指定到mongodb文件夹目录/bin 找到mongod 双击运行就可以了(这里mac和window都是一样直接到目目录点击文件启动)。


2. 安装Express

打开终端,输入:npm install -g express

npm 是node的一个安装东西的方法

-g 表示全局安装express 插件


3. 新建一个工程,使用ejs摸版引擎

window下例如新建到d: 盘

windows 下打开 cmd 切换到 D 盘,输入 express -e ejs know

mac下也是cd 到指定目录,输入 express -e ejs know

mac下出现:

备注:mac下我安装了一个iTerm 代替原本的终端,所有下面看着是黑色的

Nodejs+Express+MongoDB完整案例研究 (2) - handyxuefeng - handyxuefeng的博客

表示新建成功,我们需要继续安装新建模块里面需要的一些插件:

打开know/package.json

看到下面代码:

"dependencies": {

    "express": "3.2.6",

    "ejs": "*"

  }

表示这个框架需要依赖express插件和ejs插件

下面我们使用node 的安装方法npm:

首先在终端输入 cd know

回车后继续 npm install

这里表示安装package.json文件里面需要的插件

Nodejs+Express+MongoDB完整案例研究 (2) - handyxuefeng - handyxuefeng的博客

表示安装成功


回车后输入node app

终端出现:Express server listening on port 3000

浏览器打开:localhost:3000 

浏览器出现

Express

Welcome to Express


这表示Express安装成功了



4. 安装我们会需要到的插件:

下面这个是我做完一次后,package.json中整个需要的所有插件:

Nodejs+Express+MongoDB完整案例研究 (2) - handyxuefeng - handyxuefeng的博客

在package.json的"dependencies": {} 改为一下内容:

    "express": "3.3.1",

    "ejs": "*", //摸版引擎

    "mongodb": "*", //连接mongodb的插件

    "connect-mongo": "*",//会话支持

    "connect-flash": "*", //页面通知插件

    "request": "*", //爬虫抓取时的一个插件

    "cheerio": "*", //爬虫抓取时的一个插件

    "socket.io": "*", //在线实时交流的一个插件

    "gm": "*", //国外一个需要依赖 电脑安装ImageMagick 的插件,处理图片,压缩,剪裁等

    "node-images": "*" // 国内一个不需要依赖处理图片的插件


我们先集中安装:

在package.json中添加上面插件,然后npm install

安装时间有点长,有时候会可能会没安装成功(我之前就有几次没安装成功),就继续npm install 尝试几次

检查是否安装成功的办法很简单:

对照下 node_modules 文件下的目录是不是下面图片里面一样,有没有缺少的,缺少的就表示安装失败

Nodejs+Express+MongoDB完整案例研究 (2) - handyxuefeng - handyxuefeng的博客


5. 安装gm插件的一个依赖包imagemagick:

window用户可以到http://www.imagemagick.org/script/index.php 下载window 的exe 文件安装(一直点击下一步即可)。安装好就可以配合gm实用了,不需要任何配置。window下安装好还会是一个图片处理的小软件。

mac 建议直接 http://cactuslab.com/imagemagick/ 下载安装第一个和第二个(两个都安装) With XQuartz support 版本的 ,一键安装。也是安装好就可以配合gm使用了。


6.连接数据库

在konw目录下建一个 settings.js 文件

内容如下:

module.exports = { 
  cookieSecret: 'myKonw', 
  db: 'know', 
  host: 'localhost' };

cookieSecret cookie的一个什么设置,暂时我还不了解


db是数据库的名称

host是数据库的地址

在konw目录下再建一个文件夹

内容如下:

var settings = require('../settings'),

    Db = require('mongodb').Db,

    Connection = require('mongodb').Connection,

    Server = require('mongodb').Server;

module.exports = new Db(settings.db, new Server(settings.host, Connection.DEFAULT_PORT, {}), {safe: true});

这段就是连接数据库不需要了解太多,很多项目中可以直接复制使用,

但是下面还是将我当时看的参考资料引用出来:

-----------------------------------以下为引用------------------------------------------------------------

首先我们需要在node.js下安装mongodb争对node的驱动。

npm install mongodb

下面就可以开始写代码了。首先当然是在node代码引用mongodb:

var mongodb = require("mongodb");

其次就是连接到mongodb数据库server:

var server = new mongodb.Server('localhost',27017,{auto_reconnect:true});

其中第一、二分参数分别是IP地址和端口,由于我们这里没有设计到验证,因此便不需要验证参数。最后的参数是一个对象,我们设置了一个属性auto_reconnect为true,就表示如果当程序与mongodb失去连接便回自动重连。

var server = new mongodb.Server('localhost',27017,{auto_reconnect:true},10);

通常情况下我们可以不管最后一个参数,这个参数是线程池的数量,系统默认的设置是5,也就是说可以同时支持打开5个数据库连接,并进行操作。当然我们可以根据自己需要设置希望的值。

然后就是获取或者创建一个DB实例。

var db = new mongodb.Db("mydb2",server);

------------------------------------------------------------------------------------------------------------
引用来源:http://toozhao.com/2012/10/nodejs-mongo-one/


7. 安装会话支持配合mongodb

会话支持对应connect-mongo插件

打开app.js,  在 , path = require('path') 后添加以下代码:

, MongoStore = require('connect-mongo')(express)

, settings = require('./settings');

在 app.use(express.methodOverride()); 后添加:

app.use(express.cookieParser());

app.use(express.session({

  secret: settings.cookieSecret,

  key: settings.db,

  cookie: {maxAge: 1000 * 60 * 60 * 24 * 30},//30 days

  store: new MongoStore({

    db: settings.db

  })

}));

其中 express.cookieParser() 是 Cookie 解析的中间件。express.session() 则提供会话支持,secret 用来防止篡改 cookie,key 的值为 cookie 的名字,通过设置 cookie 的 maxAge 值设定cookie的生存期,这里我们设置 cookie 的生存期为30天,设置它的 store 参数为 MongoStore 实例,把会话信息存储到数据库中,以避免丢失。我们可以通过 req.session 获取当前用户的会话对象,以维护用户相关的信息。


下面检测mongodb是否安装成功:

终端cd到know: node app


然后查看mongodb是否有新的数据库:

我mac上使用的是mongoHub

如下图:

Nodejs+Express+MongoDB完整案例研究 (2) - handyxuefeng - handyxuefeng的博客

左侧有一个know 的文件,就表示连接成功。

window 可以安装:http://www.mongovue.com


8. 前端框架

使用的是http://www.bootcss.com 

Bootstrap这个不用做太多介绍了


9. 前端摸版

我用的underscore 中的一个摸版引擎,这个可以用在前端和node上,很给力

这个我之前有写过详细介绍,参考:Underscore.js实用功能template模板


10. 调试技巧

nodejs可以直接在Chrome下面调试,设置断点。和调试前端没有什么差别。

nodejs在线调试工具node-inspector


nodejs每次修改完需要重启,可以使用supervisor

nodejs调试避免重新启动的supervisor插件用法

ps: 上面调试的有的需要管理员权限

转自:

唐老鸭光光


你可能感兴趣的:(Nodejs+Express+MongoDB完整案例研究 (2))