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的主要内容,如果未能解决你的问题,请参考以下文章