关于mongoose认证踩的坑【url参数无法识别】
#连接代码
var conn= mongoose.connect('MongoDB://username:password@127.0.0.1:27017/test?authMechanism=MONGODB-CR');
#报错>MongoError: server 127.0.0.1:27017 timed out
创新互联专注于企业网络营销推广、网站重做改版、青川网站定制设计、自适应品牌网站建设、H5建站、商城系统网站开发、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为青川等各大城市提供网站开发制作服务。
#尝试用命令行连接>mongo -u username -p password 127.0.0.1:27017 MongoDB shell version: 2.4.9 connecting to: 127.0.0.1:27017/test Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }
连接成功了,而且执行读写操作也没问题,那会不会是mongoose的问题呢? #接下来用mongoDB驱动测试下
varMongoClient= require('mongodb').MongoClient;var url='mongodb://username:password@127.0.0.1:27017/test?authMechanism=MONGODB-CR';MongoClient.connect(url,function(err, db){ console.log(err? err:'mongoDB连接成功!');});
> node mongoDB.js mongoDB连接成功!
既然mongoose是基于mongoDB驱动的,应该不大会出现这种情况。那会不会是mongoose无法识别url参数呢.接下来去掉'?authMechanism=MONGODB-CR'这段字符串MongoError: server 127.0.0.1:27017 timed out 果然是mongoose无法识别这段参数,接下来翻文档[mongoose文档]http://mongoosejs.com/docs/api.html Ctrl+F 粘贴authMechanism没找到,直接点击connection.js在里面找到这一行auth - options for authentication (see http://mongodb.github.com/node-mongodb-native/api-generated/db.html#authenticate) 点击进去就找到我们想要的了。
修改代码,以Object的方式配置options!
const options={ user:"username", pass:"password", auth:{authMechanism:'MONGODB-CR'}}var conn= mongoose.connect('mongodb://@127.0.0.1:27017/test',options);
重新运行 node app.js[2016-08-22 15:21:39.709] [INFO] console - app listen to 3000, NODE_ENV: development 完美!!! 坑嘛, 踩踩更健康, 特别对于我们这些新手来说。
网站栏目:关于mongoose认证踩的坑【url参数无法识别】
浏览路径:http://scyanting.com/article/ipccid.html