用express.js和mongoose声明会话

我正在用Node.js,Express,MongoDB(mongoose)做一个应用程序,我正在尝试使用server.js在一个单独的文件中build立数据库连接,但是我很难用connect-mongo。

首先在我的server.js我有这个:

 /* jshint esversion: 6 */ 'use strict'; let express = require('express'); const db = require('./app/config/db'); const routes = require('./app/routes/routes'); const users = require('./app/routes/users'); let app = express(); const conn = db.connect(); app.set('views', path.join(__dirname, 'app/views')); app.set('view engine', 'hbs'); ... app.use('/', routes); app.use('/users', users); app.listen(3000); module.exports = app; 

这只处理应用程序path和应用程序服务器,然后我有我的项目的下一个文件夹结构:

 myApp |___app |___bin |___config |___credentials.js |___db.js |___controllers |___routes |___views |___node_modules |___package.json |___server.js 

Welll insidde config文件夹我有两个javascripts处理到数据库的连接,在credentials.js字面上只有数据库的访问凭据。

然后我的问题是在db.js里面,接下来我向你展示这个文件:

 /* jshint esversion: 6 */ 'use strict'; let mongoose = require('mongoose'), async = require('async'), express = require('express'); const credentials = require('./credentials'); const session = require('express-session'); const MongoStore = require('connect-mongo')(session); let db = mongoose.connection, app = express(); exports.connect = function(done){ const connection = mongoose.connect(credentials.host, credentials.database, credentials.port, credentials.db); db.on('error', (error =>{ console.log("Error estableciendo la conexion"); process.exit(1); })); db.on('open', (argv)=>{ db.db.listCollections().toArray((err, collections)=>{ collections.forEach(x => console.log(x)); }); }); /* Define sessions in MongoDB */ app.use(session({ secret: credentials.sessionSecret, store: new MongoStore({ dbPromise: db }) })); } 

我得到了下一个错误: 与nodemon server.js错误

你知道如何使用这个项目结构来启动connect-mongo吗?

顺便说一下,在credentials.js文件中,我将Bluebird设置为我的承诺库。

提前谢谢!

问题是,像@ MananVaghasiya说,我的variablesdb不是一个承诺,这是一个在mongoose项目内的错误,所以我改变了连接types为mongoose基本的uri连接,然后在login查询后,我设置会话。

这个代码现在看起来像这样,所以谢谢你的时间。

 module.exports.login = (req, res)=>{ const mail = req.body.mail.replace(/^\s\s*/, '').replace(/\s\s*$/, ''), password = req.body.password; user.findOne({$and:[{'mail' : mail}, {'password': password}]}, (err, user)=>{ if(err){ res.send(err); } else { /* Define sessions in MongoDB */ app.use(session({ secret: credentials.sessionSecret, store: new MongoStore({ mongooseConnection: db }), saveUnitialized: true, resave: false, cookie:{ path: "/" }, name: user.role })); return user; } }); };