express联接mongodb数据库
mongodb数据库是一个以文件形式存储的非关系型数据库(nosql)。Mongodb 没有关系型数据库中行和表的概念,不过有类似的文档集合的概念。文档是mongodb最基本的单位。集合是多个文档的总和,一个集合有多个文档,一个数据库有多个集合。
连接数据库之前要先安装数据库:以下是linux(64位)平台安装数据库:
首先去官网下载适合你电脑的mongodb版本::http://www.mongodb.org/downloads
下载安装包后解压,将安装包解压到指定路径。然后把名字改成mongodb。
设置环境变量:
mongodb的可执行文件在bin目录下,可以把它设置到path路径中:
export PATH=<mongodb-install-directory>/bin:$PATH
<>中为你安装mongodb的路径。
你可以在终端输入命令:mongo 来查看你是否已装上mongodb。
第二步:在mongodb中新建一个文件夹blog(你的工程名字),然后进入bin目录下再终端输入命令:
./mongod --dbpath ../blog/
命令:blog文件夹为我们工作的存储目录并启动数据库。
连接数据库:
打开package.json文件,在dependencies 最后一行添加:
"mongodb": "1.4.15"
然后在工程目录下运行:npm install 更新依赖模块。
mongodb模块安装好后,在工程目录下新建settings.js 文件,并在里面添加:
module.exports = { cookieSecret: 'myblog', db: 'blog', host: 'localhost', port: 27017 };
然后在新建一个models文件夹,并在文件夹里新建db.js文件,文件里添加:
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, settings.port), {safe: true});
然后打开app.js,在
var routes = require('./routes/index');下添加:
var settings = require('./settings');
会话支持:
把会话信息存储到数据库中,便于持久维护,我们需要express-session和connect-mongo这两个中间件的帮助。在package.json文件里添加:
"express-session": "1.9.1", "connect-mongo": "0.4.1"
更新模块npm install后,打开app.js文件,添加:
var session = require('express-session'); var MongoStore = require('connect-mongo')(session); app.use(session({ secret: settings.cookieSecret, key: settings.db,//cookie name cookie: {maxAge: 1000 * 60 * 60 * 24 * 30},//30 days store: new MongoStore({ db: settings.db, host: settings.host, port: settings.port }) }));
注意:这里提醒一下,这两段代码的位置问题。上面两个变量放在文件中变量的位置。下面一段应放置在:
app.use(express.static(path.join(__dirname, 'public')));
这段代码的上面。