2014-12-31 41 views
0

代码的Sample-无法连接到数据库mongolab

const express=require('express'), 
    http=require('http'), 
    handlebars=require('express-handlebars').create({defaultLayout:'main'}), 
    fs=require('fs'), 
    mongoose=require('mongoose'), 
    uriUtil = require('mongodb-uri'), 
    credentials=require('./credentials.js'), 
    bodyParser=require('body-parser'); 

    //connect to databse 
    var mongooptions = { 
     server: { 
      poolSize:5, 
      socketOptions: { keepAlive: 1, connectTimeoutMS: 30000 } }, 
      replset: { socketOptions: { keepAlive: 1, connectTimeoutMS : 30000 } 
     }, 
    }; 
    var mongodbUri=("mongodb://user:[email protected]:29831/project"); 
    var mongooseUri=uriUtil.formatMongoose(mongodbUri); 
    mongoose.connect(mongooseUri,mongooptions); 
    var conn=mongoose.connection; 
    conn.on('error',function(err){ 
     console.log(err.message); 
    }); 

    conn.on('connection',function() { 
     var app=express(); 
     app.set('port',process.env.PORT); 
     app.engine('handlebars',handlebars.engine); 
     app.set('view engine','handlebars'); 
     app.use(express.static('./public')); 
     app.use(bodyParser.json()); 
     app.use(bodyParser.urlencoded({extended: true})); 
     app.use(require('express-session')({ 
      secret: 'intro skill', 
      resave: false, 
      saveUninitialized: false, 
      cookie: {maxAge:900000} 
     })); 
     var userSchema=new mongoose.Schema({ 
      username: String, 
      password: String, 
      email : String 
     }); 
     var user=mongoose.model('users',userSchema); 
     //routing 

     function startServer(){ 
      http.createServer(app).listen(app.get('port'),function(){ 
       console.log("Server Started at port "+app.get('port')); 
      }); 
     } 

     if(require.main===module){ 
      startServer(); 
     } 
     else{ 
      module.exports=startServer; 
     } 

    }); 

这是我的node.js中的代码我使用mongolab作为mongodb。
我在云9上运行应用程序。
当我使用猫鼬连接到数据库时,它会抛出错误,因为未能连接到1%40ds029831.mongolab.com:29831
应用程序正在连接到mongolab并进行身份验证(这是成功的)后,它显示此错误。 请帮我这个。

回答

3

您的密码是否包含'@'字符?如果是,请将其替换为%40并再次尝试,'@'字符只应出现在主机名之前。

+0

谢谢你的工作:) – user189750

+0

太棒了。谢谢兄弟 –

+0

你先生是天才。非常感谢。我一直试图找出最后4个小时,但没有运气。很高兴我发现这个答案:) –