当我尝试使用 mongodb 配置 express.js 会话存储时,我遇到了左右错误。我正在为我的框架使用机车并配置了猫鼬。
在我的 02_mongoose.js 的初始化程序目录中,我有这个。
module.exports = function() {
mongoose.connect('mongodb://localhost:27018/basbac');
mongoose.model('User', UserSchema);
}
我知道我已经连接到数据库,因为我可以将我的用户拉到我的控制器中。
DeveloperController.show = function() {
var self = this;
var user = mongoose.model('User');
user.find().exec(function(error, users) {
if(error) {
console.log(error);
} else {
self.res.json({response: { id: self.param('id'), api: self.param('api'), users: users } });
}
});
}
http://localhost:3000/developer/test/?api=hhfkgjhukdsfkjhvsduhvudhcsiudvlskejfbk
{
response: {
id: "test",
api: "hhfkgjhukdsfkjhvsduhvudhcsiudvlskejfbk",
users: [
{
_id: "52706695a43c83a739358de5",
firstname: "cad",
lastname: "bane",
address: "duro",
email: "cad@bane.com"
},
{
_id: "52706695a43c83a739358de6",
firstname: "jar jar",
lastname: "binks",
address: "naboo",
email: "jarjar@binks.com"
}
]
}
}
在我的 config/all.js 中,我将此作为会话的配置
var MongoStore = require('connect-mongo')(express);
var mongoose = require('mongoose');
this.use(express.cookieParser());
this.use(express.session({
secret: 'keyboard cat',
store: new MongoStore({
mongoose_connection: mongoose.connection
})
}));
但这会引发错误。
this.db = new mongo.Db(options.mongoose_connection.db.databaseName,
TypeError: Cannot read property 'databaseName' of undefined
我也尝试像 connect-mongo 文档中所说的那样做,但我也遇到了错误。( https://github.com/kcbanner/connect-mongo ) mongoose_connection 的形式: someMongooseDb.connections[0] 使用现有的猫鼬连接。(可选的)
this.use(express.session({
secret: 'keyboard cat',
store: new MongoStore({
mongoose_connection: mongoose.connections[0]
})
}));
但我得到和以前一样的错误。
this.db = new mongo.Db(options.mongoose_connection.db.databaseName,
TypeError: Cannot read property 'databaseName' of undefined
我也尝试按照许多文章所说的去做。这是某人工作配置的示例(在 ExpressJS、PassportJS 和 MongoStore 中注销)
this.use(express.session({
secret: 'keyboard cat',
store: new MongoStore({
db: mongoose.connection.db
})
}));
但这也会产生错误,我知道 db 键实际上是未定义的
throw new Error('Required MongoStore option `db` missing');
将此连接传递到新的 MongoStore 中我做错了什么?当我启动console.log() mongoose 对象时,我无法找到有关它正在使用的连接的任何信息。我确实看到了一个基础对象,但它里面没有 db 键。我是否需要将更多选项传递给 mongoose 配置?