【问题标题】:Mongoose OpenShift Connection猫鼬 OpenShift 连接
【发布时间】:2015-03-16 09:45:12
【问题描述】:

我正在使用 nodejs 和 mongodb 在 openShift 上构建应用程序。我也在使用猫鼬并尝试使用此代码进行连接

var url = process.env.OPENSHIFT_MONGODB_DB_URL;
    var db = mongoose.connect(
        url,
        function(err) {
            console.log("Error loading the db...");
        });

检查 openshift 日志我可以看到它给了我错误消息。这样做的正确方法是什么?

【问题讨论】:

  • 您还需要连接process.env.OPENSHIFT_APP_NAME,即var url = process.env.OPENSHIFT_MONGODB_DB_URL + process.env.OPENSHIFT_APP_NAME;
  • 它给了我同样的错误信息
  • 你用的是哪个猫鼬版本?
  • 我认为的最后一个......我使用npm install mongoose获取了lib
  • 您能否通过检查您的 packages.json 文件或npm view mongoose versions 来确认实际版本号?我问的原因是因为带有回调的猫鼬连接方法不适用于较新的猫鼬版本(3.X)。不如试试mongoose.connection.on('error', function (err) { ... });

标签: node.js mongodb mongoose openshift


【解决方案1】:

您可以尝试以下模式:

server.js

// call the packages we need
var express    = require('express');        
var app        = express();                 
var mongoose   = require('mongoose');

var url = '127.0.0.1:27017/' + process.env.OPENSHIFT_APP_NAME;

// if OPENSHIFT env variables are present, use the available connection info:
if (process.env.OPENSHIFT_MONGODB_DB_URL) {
    url = process.env.OPENSHIFT_MONGODB_DB_URL +
    process.env.OPENSHIFT_APP_NAME;
}

// Connect to mongodb
var connect = function () {
    mongoose.connect(url);
};
connect();

var db = mongoose.connection;

db.on('error', function(error){
    console.log("Error loading the db - "+ error);
});

db.on('disconnected', connect);

【讨论】:

  • 我也遇到了这个问题。我想指出我之所以遭受这种情况的原因是因为我尝试连接另一个数据库。所以process.env.OPENSHIFT_APP_NAME这个参数很重要。
猜你喜欢
  • 1970-01-01
  • 2016-04-13
  • 1970-01-01
  • 2015-12-30
  • 1970-01-01
  • 1970-01-01
  • 2021-10-25
  • 2020-06-10
  • 2015-08-16
相关资源
最近更新 更多