如何在 mongoLab 和 Heroku 服务器中使用 mongo URI

Posted

技术标签:

【中文标题】如何在 mongoLab 和 Heroku 服务器中使用 mongo URI【英文标题】:How to use mongo URI in mongoLab and Heroku server 【发布时间】:2013-11-10 21:47:06 【问题描述】:

我正在使用 MongoDb 和 Nodejs。 Nodejs 托管在 Heroku 服务器上,而 Mongodb 通过 Heroku 插件在 MongoLab 中。

安装 MongoLab 插件后,我收到了这个 URI:

mongodb://<dbuser>:<dbpassword>@ds053148.mongolab.com:53148/heroku_app18934798

我不知道如何使用这个 URI,请帮忙? 放在哪里?什么是&lt;dbuser&gt;:&lt;dbpassword

这是我在 locallhost 中关注 mongoDB 的配置

server.js

var env = process.env.NODE_ENV || 'development',
    config = require('./config/config')[env],
    mongoose = require('mongoose');

var db = mongoose.connect(config.db);

express.js

app.use(express.session(
            secret: 'thissecret',
            key:'express.sid',
            store: new mongoStore(
                url: config.db,
                collection: 'sessions'
            )
        ));

config.js

module.exports = 
    development: 
        db: 'mongodb://localhost/mean-dev',
        root: rootPath,
        app: 
            name: 'MEAN - A Modern Stack - Development'
        ,
        facebook: 
            clientID: "APP_ID",
            clientSecret: "APP_SECRET",
            callbackURL: "http://localhost:3000/auth/facebook/callback"
        

    ,
    test: 
        db: 'mongodb://localhost/mean-test',
        root: rootPath,
        app: 
            name: 'MEAN - A Modern Stack - Test'
        ,
        facebook: 
            clientID: "APP_ID",
            clientSecret: "APP_SECRET",
            callbackURL: "http://localhost:3000/auth/facebook/callback"
        

    ,
    production: 
        db: 'mongodb://localhost/mean',
        root: rootPath,
        app: 
            name: 'MEAN - A Modern Stack - Production'
        ,
        facebook: 
            clientID: "APP_ID",
            clientSecret: "APP_SECRET",
            callbackURL: "http://localhost:3000/auth/facebook/callback"
        

    
;

【问题讨论】:

【参考方案1】:

您可以使用以下方式连接到数据库:

var mongoose = require('mongoose');
mongoose.connect('mongodb://<dbuser>:<dbpassword>@ds053148.mongolab.com:53148/<database name>');

但在你的情况下,我会将mongodb://localhost/&lt;database name&gt; 替换为mongodb://&lt;dbuser&gt;:&lt;dbpassword&gt;@ds053148.mongolab.com:53148/&lt;database name&gt;

【讨论】:

【参考方案2】:
mongoURI = 'mongodb://localhost/test';

MONGOLAB_URI = "mongodb://<admin>:<admin>@ds3232.mlab.com:23213/abcd"

mongoose.connect(MONGOLAB_URI || mongoURI)

【讨论】:

您能否解释一下您的解决方案在做什么,而不是仅仅粘贴一段代码。 这实际上是 IMO 的最佳答案,通过阅读代码 @N 也很明显【参考方案3】:
module.exports = 
development: 
    db: 'mongodb://your_user_name:your_password@ds053148.mongolab.com:53148/heroku_app18934798',
    root: rootPath,
    app: 
        name: 'MEAN - A Modern Stack - Development'
    ,
    facebook: 
        clientID: "APP_ID",
        clientSecret: "APP_SECRET",
        callbackURL: "http://localhost:3000/auth/facebook/callback"
    

,
test: 
    db: 'mongodb://your_user_name:your_password@ds053148.mongolab.com:53148/heroku_app18934798',
    root: rootPath,
    app: 
        name: 'MEAN - A Modern Stack - Test'
    ,
    facebook: 
        clientID: "APP_ID",
        clientSecret: "APP_SECRET",
        callbackURL: "http://localhost:3000/auth/facebook/callback"
    

,
production: 
    db: 'mongodb://your_user_name:your_password@ds053148.mongolab.com:53148/heroku_app18934798',
    root: rootPath,
    app: 
        name: 'MEAN - A Modern Stack - Production'
    ,
    facebook: 
        clientID: "APP_ID",
        clientSecret: "APP_SECRET",
        callbackURL: "http://localhost:3000/auth/facebook/callback"
    


;

将此粘贴​​到您的 config.js 文件中,并将 your_user_name 替换为您的用户名,并将 your_password 替换为您的密码以获取连接。

【讨论】:

以上是关于如何在 mongoLab 和 Heroku 服务器中使用 mongo URI的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 MongoLab 在 Heroku 上设置 MongoDB 数据库?

如何从 python 使用 mongolab 插件到 Heroku?

如何从 python 使用 mongolab 插件到 Heroku?

无法在 heroku 上使用 node.js 连接到 mongolab

mongolab和heroku之间的连接需要ssl吗?

在 Heroku 上的 NodeJS 中,MongoDB 与 MongoLab 的连接超时