express:node throwing error on mongodb


   1: C:\Node_app\microblog\node_modules\connect-mongo\lib\connect-mongo.js:126
   2:         throw new Error('Error connecting to database');
   3:               ^
   4: Error: Error connecting to database
   5:     at module.exports.MongoStore.__proto__ (C:\Node_app\microblog\node_module
   6:     at Db.open (C:\Node_app\microblog\node_modules\connect-mongo\node_modules
   7:     at Server.connect.connectionPool.on.server._serverState (C:\Node_app\micr
   8: ion\server.js:408:7)
   9:     at EventEmitter.emit (events.js:115:20)
  10:     at connection.on.connectionStatus (C:\Node_app\microblog\node_modules\con
  11: :93:15)
  12:     at EventEmitter.emit (events.js:91:17)
  13:     at Socket.errorHandler (C:\Node_app\microblog\node_modules\connect-mongo\
  14:     at Socket.EventEmitter.emit (events.js:88:17)
  15:     at Socket._destroy.self.errorEmitted (net.js:329:14)
  16:     at process.startup.processNextTick.process._tickCallback (node.js:244:9)

與此類似node throwing error on mongodb,一直報Db.open那里出錯,查源代碼,發現應該是有err參數傳入,因為之前從來沒接觸過mongodb--在某些文章中看到稍微有些了解,覺得是不是沒有安裝mongodb的問題呢?試了一下,果然如此。

windows下安裝mongodb:

1、下載MongoDB,下載頁面>>

2、解壓安裝,因為我電腦的C盤非系統盤,默認是我工作目錄,所以我先解壓到這個盤里。c:\mongodb (解壓出來有一個bin目錄,里面很多exe文件),然后再建立一個目錄和文件

c:\mongodb\logs\mongodb.log

3、建立MongoDB的數據存放目錄,假設為c:\mongodb_data\db

4、啟動Mongo Db服務,如果控制台上看到類似的信息,則說明啟動成功

 

默認MongoDB監聽的端口是27017,mysql的是3306

5、測試連接

新開一個cmd窗口,進入mongodb的bin目錄,輸入mongo.exe,出現如下信息說明測試通過

繼續測試

   1: >use test
   2: sitched to db test
   3: >db.foo.save({hello:1, word:2})
   4: >db.foo.find()
   5: "_id" : ObjectId("500a5fde4ad5d4c1884a5c3f"), "hello" : 1, "word" : 2 }

然后輸入exit,退出窗口,然后再輸入exit關閉該dos

6、注冊MongoDB為系統服務。

   1: C:\mongodb\bin>mongod.exe --dbpath=c:\mongodb_data\db --logpath=c:\mongodb\logs\mongodb.log --install

如果需要卸載該服務,使用“sc delete MongoDB”即可

7、啟動mongodb服務

net start MongoDB

打開任務管理器,可以看到進程已經啟動

如果需要停止服務: net stop MongoDb

 

再次啟動app,發現可以正常啟動了

image

 

到這里express中使用mongodb來保存session就可以正常工作了,app.js的代碼如下:

   1:  
   2: /**
   3:  * Module dependencies.
   4:  */
   5:  
   6: var express = require('express');
   7: var http = require('http');
   8: var routes = require('./routes');
   9:  
  10: var settings = require('./settings');
  11:  
  12: var MongoStore = require('connect-mongo')(express);
  13: //var connect = require('connect');
  14: //var MongoStore = require('connect-mongo')(connect);
  15:  
  16:  
  17: var sessionStore = new MongoStore({
  18:     db : settings.db
  19: }, function() {
  20:         console.log('connect mongodb success...');
  21:     });
  22:  
  23:  
  24:  
  25: var app = express();
  26:  
  27: app.configure(function(){
  28:   app.set('port', process.env.PORT || 3000);
  29:   app.set('views', __dirname + '/views');
  30:   app.set('view engine', 'jade');
  31:   app.use(express.favicon());
  32:   app.use(express.logger('dev'));
  33:   app.use(express.bodyParser());
  34:   app.use(express.methodOverride());
  35:  
  36:   app.use(express.cookieParser());
  37:   
  38:   app.use(express.session({
  39:     secret : settings.cookie_secret,
  40:     store : sessionStore,
  41:     cookie : {
  42:         maxAge : new Date(Date.now() + 1000 * 60 * 60)
  43:     }    
  44:   }));
  45:  
  46:   app.use(app.router);
  47:   app.use(express.static(__dirname + '/public'));
  48: });
  49:  
  50: app.configure('development', function(){
  51:   app.use(express.errorHandler());
  52: });
  53:  
  54: app.get('/', routes.index);
  55:  
  56:  
  57: http.createServer(app).listen(app.get('port'), function(){
  58:   console.log("Express server listening on port " + app.get('port'));
  59: });


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM