Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何从NodeJS在MongoDB中存储会话?_Node.js_Mongodb_Session_Express - Fatal编程技术网

Node.js 如何从NodeJS在MongoDB中存储会话?

Node.js 如何从NodeJS在MongoDB中存储会话?,node.js,mongodb,session,express,Node.js,Mongodb,Session,Express,我使用connectmongo模块将express中的会话存储在mongodb中。像这样使用它: app.use(express.session({ 'secret': config.APP_SECRET, 'store': new MongoStore({ 'db': db }) })); var mongoUri = 'mongodb://username:password@foo.mongohq.com/port/db' app.use(expr

我使用
connectmongo
模块将
express
中的会话存储在
mongodb
中。像这样使用它:

app.use(express.session({
    'secret': config.APP_SECRET,
    'store': new MongoStore({
        'db': db
    })
}));
var mongoUri = 'mongodb://username:password@foo.mongohq.com/port/db'

app.use(express.session({
    store   : new MongoStore({
        url  : mongoUri
    })
}))
其中:

var MongoStore = require(config.MODULES_DIR + 'connect-mongo')(express);
var db = mongoose.connection; // already connected as i use in in callback
但当使用会话时,我会出现以下错误:

TypeError: Object #<Object> has no method 'open'
    at MongoStore._open_database (/node_modules/connect-mongo/lib/connect-mongo.js:174:15)
    at MongoStore._get_collection (/node_modules/connect-mongo/lib/connect-mongo.js:169:14)
    at MongoStore.get (/node_modules/connect-mongo/lib/connect-mongo.js:211:10)
    at Object.session [as handle] (/node_modules/express/node_modules/connect/lib/middleware/session.js:314:11)
    at next (/node_modules/express/node_modules/connect/lib/proto.js:193:15)
    at Object.cookieParser [as handle] (/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js:60:5)
    at next (/node_modules/express/node_modules/connect/lib/proto.js:193:15)
    at Object.urlencoded [as handle] (/node_modules/express/node_modules/connect/lib/middleware/urlencoded.js:49:37)
    at next (/node_modules/express/node_modules/connect/lib/proto.js:193:15)
    at Object.json [as handle] (/node_modules/express/node_modules/connect/lib/middleware/json.js:51:37)
TypeError:对象#没有方法“open”
在MongoStore打开数据库(/node\u modules/connect mongo/lib/connect mongo.js:174:15)
在MongoStore.获取集合(/node\u modules/connect mongo/lib/connect mongo.js:169:14)
在MongoStore.get(/node\u modules/connect mongo/lib/connect mongo.js:211:10)
在Object.session[作为句柄](/node_modules/express/node_modules/connect/lib/middleware/session.js:314:11)
下一步(/node\u modules/express/node\u modules/connect/lib/proto.js:193:15)
在Object.cookieParser[作为句柄](/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js:60:5)
下一步(/node\u modules/express/node\u modules/connect/lib/proto.js:193:15)
在Object.urlencoded[as handle](/node_modules/express/node_modules/connect/lib/middleware/urlencoded.js:49:37)
下一步(/node\u modules/express/node\u modules/connect/lib/proto.js:193:15)
在Object.json[作为句柄](/node_modules/express/node_modules/connect/lib/middleware/json.js:51:37)

我总是发现使用MongoUri连接更容易。大多数数据库服务将为您提供一个数据库服务。它应该是这样的:

app.use(express.session({
    'secret': config.APP_SECRET,
    'store': new MongoStore({
        'db': db
    })
}));
var mongoUri = 'mongodb://username:password@foo.mongohq.com/port/db'

app.use(express.session({
    store   : new MongoStore({
        url  : mongoUri
    })
}))

如果要使用Mongoose连接,则需要适当命名的选项: