正在拜读https://github.com/nswbmw/N-blog,看到这里 出现了难以解决的错误:
首先我的本地数据库是开启了用户验证的,这个例子暂时是没有的,请看我的本地入口文件:
·
var session = require('express-session');
var MongoStore = require('connect-mongo')(session);
var flash = require('connect-flash');
var config = require('config-lite');
·
·
·
app.use(session({
name: config.session.key,// 设置 cookie 中保存 session id 的字段名称
secret: config.session.secret,// 通过设置 secret 来计算 hash 值并放在 cookie 中,使产生的 signedCookie 防篡改
cookie: {
maxAge: config.session.maxAge// 过期时间,过期后 cookie 中的 session id 自动删除
},
store: new MongoStore({// 将 session 存储到 mongodb
url: config.mongodb// mongodb 地址
})
}));
// flash 中间价,用来显示通知
app.use(flash());
// 设置模板全局常量
app.locals.blog = {
title: pkg.name,
description: pkg.description
};
// 添加模板必需的三个变量
app.use(function (req, res, next) {
res.locals.user = req.session.user;
res.locals.success = req.flash('success').toString();
res.locals.error = req.flash('error').toString();
next();
});
·
·
然后是为config创建的默认文件:
module.exports = {
port: 3000,
session: {
secret: 'myblog',
key: 'myblog',
maxAge: 2592000000
},
mongodb: 'mongodb://localhost:27017/myblog'
};
可以看出我这里没有用户验证,所以运行程序后显示
Unhandled rejection MongoError: not authorized on myblog to execute command { listIndexes: "sessions", cursor: {} }
at Function.MongoError.create (E:\learnNode\nodeBlog\node_modules\connect-mongo\node_modules\mongodb\node_modules\mongodb-core\lib\error.js:31:11)
at queryCallback (E:\learnNode\nodeBlog\node_modules\connect-mongo\node_modules\mongodb\node_modules\mongodb-core\lib\cursor.js:213:36)
at E:\learnNode\nodeBlog\node_modules\connect-mongo\node_modules\mongodb\node_modules\mongodb-core\lib\connection\pool.js:455:18
at nextTickCallbackWith0Args (node.js:420:9)
at process._tickCallback (node.js:349:13)
我在本地新建了myblog数据库,然后添加了用户
> use myblog
switched to db myblog
> show users
{
"_id" : "myblog.test",
"user" : "test",
"db" : "myblog",
"roles" : [
{
"role" : "dbOwner",
"db" : "myblog"
}
]
}
{
"_id" : "myblog.myblog",
"user" : "myblog",
"db" : "myblog",
"roles" : [
{
"role" : "dbAdmin",
"db" : "myblog"
}
]
}
并且更改了接入的mongodb的地址:
module.exports = {
port: 3000,
session: {
secret: 'myblog',
key: 'myblog',
maxAge: 2592000000
},
mongodb: 'mongodb://myblog:myblog@localhost:27017/myblog'
};
这次运行没有报错,但是当我尝试打开任何页面时,又出错了:
MongoError: not authorized on myblog to execute command { find: "sessions", filter: { _id: "m0DdUbQOkBt9if1E68C230avYqyCgpLU", $or: [ { expires: { $exists: false } }, { expires: { $gt: new Date(1478591799060) } } ] }, limit: 1, batchSize: 1, singleBatch: true }
at Function.MongoError.create (E:\learnNode\nodeBlog\node_modules\connect-mongo\node_modules\mongodb\node_modules\mongodb-core\lib\error.js:31:11)
at queryCallback (E:\learnNode\nodeBlog\node_modules\connect-mongo\node_modules\mongodb\node_modules\mongodb-core\lib\cursor.js:213:36)
at E:\learnNode\nodeBlog\node_modules\connect-mongo\node_modules\mongodb\node_modules\mongodb-core\lib\connection\pool.js:455:18
at nextTickCallbackWith0Args (node.js:420:9)
at process._tickCallback (node.js:349:13)
问了公司的人员,说是刚开始是链接的,但是可能又断开了,当我访问网页时就不能写入了?
所以请大家帮忙看看怎么回事?多谢了!
今天换成我们数据库原来的用户名和密码,就可以了。原来的用户admin是有root权限的,但我创建的myblog用户也是有读写权限的,不知道为什么就不行。昨天被这个纠结了好久,没想到今天一下灵光闪现。
先用命令行登上去执行看看,会不会报错,定位问题,
db.auth('myblog', 'myblog')
返回了0还是1'mongodb://myblog:myblog@localhost:27017/myblog'
这个user和pwd之间的空格是你复制多出来的吗???????? 还是说你代码的连接串写错了@守望回音 我也做的这个项目,遇到了同样的问题,没看懂下面的解答,请问咋解决?