mLab 不适用于 Heroku

Posted

技术标签:

【中文标题】mLab 不适用于 Heroku【英文标题】:mLab doesn't work on Heroku 【发布时间】:2017-09-12 13:55:44 【问题描述】:

我已将 mLab 添加到我的 Heroku 应用程序中,我也使用 mongoose。我尝试使用来自本地主机的连接字符串,它正在工作(几乎)。在我的服务器文件中,我使用:

var db = mongoose.connection;
if (process.env.MONGODB_URI) 
 mongoose.connect('mongodb://heroku_fb82r7lw:bbgj8uliam1psdda88fleu55li@ds161580.mlab.com:61580/heroku_fb82r7lw');

    // mongoose.connect(process.env.MONGODB_URI);
 else 
 mongoose.connect('mongodb://heroku_fb82r7lw:bbgj8uliam1psdda88fleu55li@ds161580.mlab.com:61580/heroku_fb82r7lw');

    // mongoose.connect('mongodb://localhost/fitMe')

如果我从本地主机打开应用程序,它会将内容保存到数据库中,并且可以将其取回,尽管不是全部,但在 heroku 上它根本不起作用。我使用与服务器反应。我认为溃败有问题..所以这里是服务器文件的链接: https://github.com/HelenaVolskaia/Motivation/blob/master/server/app.js

【问题讨论】:

如果我没记错的话,你必须使用 mLab 插件才能在 Heroku 上使用 mLab:elements.heroku.com/addons/mongolab 是的,我正在使用它,来自mLab的连接字符串 当您说“根本不起作用”时,您是什么意思?数据是否只是消失?有错误信息吗?需要更多详细信息。 请求失败,状态码为 404,我无法发布/获取信息。 所以当你运行heroku应用程序时,mongodb连接失败了吗?如果您的服务器无法连接到 mongo labs,那么服务器将停止给出一些错误(说无法连接到 mongodb)。你不能运行你的服务器,所以错误是别的吗? 【参考方案1】:

你可以在本地设置一个环境变量并且只使用这个:

// Connect Mongo
mongoose.Promise = global.Promise; // mongoose promises deprecated, use node - mongoosejs.com/docs/promises
mongoose.connect(config.db.MONGODB_URI);
mongoose.connection.once('open', () =>  console.log('MongoDB Connected'); );
mongoose.connection.on('error', (err) =>  console.log('MongoDB connection error: ', err); );

但无论如何,添加 on connection 错误处理程序并查看错误是什么,这样您就可以更深入地了解它为什么没有连接。

【讨论】:

以上是关于mLab 不适用于 Heroku的主要内容,如果未能解决你的问题,请参考以下文章

为啥排序不适用于矢量?

验证不适用于 saveMany

UipanGesture 不适用于 Uiswitch

jQuery 不适用于 Express

为啥 MultiBinding 不适用于 CornerRadius

按钮不适用于更新面板