当前位置:编程学习 > JS >>

Node.js操作mongodb数据库

 1、开始运用mongoose时,得先安装,打开命令行,执行$ npm install mongoose

2、连接mongodb数据库,在app.js里面添加如下两行代码。


[javascript]
var mongoose = require('mongoose'); 
mongoose.connect('mongodb://localhost/test'); //连接到一个test的数据库 

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test'); //连接到一个test的数据库操作到这里基本上是个人都会,不过接下来具体如何进行数据库的操作,在没有实例的情况下还是有点纠结的。我这里以一个登录注册为例来说明如何使用。

3、用webstorm创建一个新的Express App项目,这样就直接封装好了express(),省去了自己写的麻烦。然后修改app.js如下:


[javascript]
/**
 * Module dependencies.
 */ 
 
var express = require('express') 
  , routes = require('./routes') 
  , user = require('./routes/user') 
  , http = require('http') 
  , path = require('path') 
  , mongoose = require('mongoose');   //1  
 
 
var app = express(); 
 
 
// all environments  
app.set('port', process.env.PORT || 3000); 
app.set('views', __dirname + '/views'); 
app.set('view engine', 'ejs'); 
app.use(express.favicon()); 
app.use(express.logger('dev')); 
app.use(express.bodyParser()); 
app.use(express.methodOverride()); 
app.use(app.router); 
app.use(express.static(path.join(__dirname, 'public'))); 
 
 
// development only  
if ('development' == app.get('env')) { 
  app.use(express.errorHandler()); 

 
 
app.get('/', routes.index); 
app.get('/log',routes.login); 
app.post('/log',routes.doLogin); 
app.get('/reg',routes.reg); 
app.post('/reg',routes.doReg); 
 
 
//mongoose  
mongoose.connect('mongodb://localhost/test_db');  //2 
 
 
http.createServer(app).listen(app.get('port'), function(){ 
  console.log('Express server listening on port ' + app.get('port')); 
}); 

/**
 * Module dependencies.
 */

var express = require('express')
  , routes = require('./routes')
  , user = require('./routes/user')
  , http = require('http')
  , path = require('path')
  , mongoose = require('mongoose');   //1


var app = express();


// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));


// development only
if ('development' == app.get('env')) {
  app.use(express.errorHandler());
}


app.get('/', routes.index);
app.get('/log',routes.login);
app.post('/log',routes.doLogin);
app.get('/reg',routes.reg);
app.post('/reg',routes.doReg);


//mongoose
mongoose.connect('mongodb://localhost/test_db');  //2


http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});

4、接下来定义一下Schema和Model,这些就是数据库表的结构。在项目根路径下创建一个models的文件夹,里面添加一个user.js用来定义用户表。models/user.js代码如下。


[javascript]
var mongoose = require('mongoose') 
    , Schema = mongoose.Schema 
    , ObjectId = Schema.ObjectId; 
 
var UserSchema = new Schema({ 
      name: String 
    , password: String 
}); 
 
module.exports = mongoose.model('User', UserSchema); 

var mongoose = require('mongoose')
    , Schema = mongoose.Schema
    , ObjectId = Schema.ObjectId;

var UserSchema = new Schema({
      name: String
    , password: String
});

module.exports = mongoose.model('User', UserSchema);注意最后一行,这里是直接把UserSchema的Model给导出去了,也可以直接导出UserSchema,module.exports = UserSchema,不过这样做的话,再用这个表信息的时候就得单独Model一下。

 

5、引入mongoose后,自己添加相应的文件,在view里新建登录注册页,头部底部这些包含文件也都自己建。先说注册页,表单处理路径为/reg。注意用户名密码的输入框我是直接用name="user[]"这种形式,这样后面可以直接通过这个user来获取相关信息,其实不这样也可以。
[javascript]
<% include header.ejs %> 
<form action="/reg" method="post"> 
<input type="text" name="user[name]" /> 
<input type="password" name="user[password]" /> 
<input type="submit" value="Register" /> 
</form> 
<% include footer.ejs %> 

<% include header.ejs %>
<form action="/reg" method="post">
<input type="text" name="user[name]" />
<input type="password" name="user[password]" />
<input type="submit" value="Register" />
</form>
<% include footer.ejs %>接下来修改doReg方法,这是处理注册事件的函数。
6、修改index.js,因为想在这里注册时候把数据存入到数据库中,所以这里需要引用上面第四步创建的model。具体代码如下所示。


[javascript]
var User = require('../models/user'); 
/*
 * GET home page.
 */ 
 
 
exports.index = function(req, res){ 
  User.find({}, function (err,users) { 
      res.render('index', { title: 'Express',users:users }); 
  }); 
}; 
 
exports.reg=function(req,res){ 
    res.render('reg',{title:'Register Page'}); 
}; 
exports.doReg=function(req,res){ 
    var user = new User(req.body.user); 
    user.save(function (err, user) { 
        if(!err) { 
            console.log(user); 
            res.redirect('/') 
        } 
    }); 
    console.log(req.body.user); 
}; 

var User = require('../models/user');
/*
 * GET home page.
 */


exports.index = function(req, res){
  User.find({}, function (err,users) {
 

补充:web前端 , JavaScript ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,