跟我一起用node-express搭建一个小项目(node连接mongodb)[三]

时间:2021-10-05 07:11:32

数据库虽然安装并启动成功了,但我们需要连接数据库后才能使用数据库。
怎么才能在 Node.js 中使用 MongoDB 呢?
我们使用官方提供的 node-mongodb-native 驱动模块,打开 package.json,
在 dependencies 中添加一行:"mongodb": "1.4.15"
接下来在我的yourapp目录中创建 settings.js 文件,用于保存该博客工程的配置信息,比如数据库的连接信息。
我们将数据库命名为 blog,因为数据库服务器在本地,所以 settings.js 文件的内容如下:
module.exports = {
cookieSecret: 'myblog',
db: 'blog',
host: 'localhost',
port: 27017
};
其中 db 是数据库的名称,host 是数据库的地址,port是数据库的端口号,cookieSecret 用于 Cookie 加密与数据库无关;
接下来在根目录下新建 models 文件夹,并在 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 也提供了会话中间件,默认情况下是把用户信息存储在内存中,
但我们既然已经有了 MongoDB,不妨把会话信息存储在数据库中,便于持久维护。
为了使用这一功能,我们需要借助 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
})
}));
我们已经准备好了数据库访问和会话的相关信息,接下来我们完成用户注册和登录功能