首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >猫鼬未连接Ubuntu Ubuntu 14.04

猫鼬未连接Ubuntu Ubuntu 14.04
EN

Stack Overflow用户
提问于 2015-02-12 17:36:38
回答 1查看 516关注 0票数 0

我已经使用MongoDB和猫鼬在Hapi上构建了一个节点应用程序。在本地,我可以使用该应用程序,没有问题。我可以连接到数据库,添加数据,找到它,等等。

我在数字海洋上创建了一个Ubuntu14.04 x64液滴。

我可以在液滴中输入ssh,并验证我的数据库是否有正确的名称。我使用dokku-alt进行部署,并使用dokku的mongodb:link appName mydb将db名称链接到应用程序

有一次我部署了这个应用程序,它会挂起并最终超时,我遇到了一些问题。经过大量调试和注释代码之后,我发现每当我尝试像这样点击mongo时,应用程序就会挂起:

代码语言:javascript
复制
var User = request.server.plugins.db.User;
User
  .findOne({ id: request.auth.credentials.profile.raw.id })
  .exec(function(err, user){
    // do something
  });

没有这一点,应用程序就可以很好地加载,尽管没有数据。所以我的想法是猫鼬从来没有正确地连接过。

我正在使用grunt-shell产卵来运行一个脚本,该脚本检查mongo是否已经运行,如果没有,它将启动它。我不能百分之百肯定这是水滴上需要的,但是我在当地遇到了问题,芒果已经在运行了…剧本:

/startMongoIfNotRunning.sh

代码语言:javascript
复制
if pgrep mongod; then
  echo running;
else
  mongod --quiet --dbpath db/;
fi

exit 0;

/Gruntfile.js

代码语言:javascript
复制
shell: {
  make_dir: {
    command: 'mkdir -p db'
  },
  mongodb: {
    command: './startMongoIfNotRunning.sh',
    options: {
      stdin: false,
    }
  }
},

下面是我定义数据库位置的方法:

/index.js

代码语言:javascript
复制
server.register([
  { register: require('./app/db'), options: { url: process.env.MONGODB_URL || 'mongodb://localhost:27017/mydb' } },
....

/app/db/index.js

代码语言:javascript
复制
var mongoose = require('mongoose');
var _ = require('lodash-node');
var models = require('require-all')(__dirname + '/models');

exports.register = function(plugin, options, next) {

  mongoose.connect(options.url, function() {
    next();
  });

  var db = mongoose.connection;

  plugin.expose('connection', db);
  _.forIn(models, function(value, key) {
    plugin.expose(key, value);
  });

};

exports.register.attributes = {
  name: 'db'
};

我的应用程序正在db/中寻找db文件。可能是dokku的mongodb:link appName mydb把它和错误的地点联系起来了吗?也许process.env.MONGODB_URL没有被正确设置?我真的不知道从这里往哪里走。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-16 18:34:01

结果,解决我的问题的方法是在我的液滴的主机文件中添加一个条目,指向mongo url:

代码语言:javascript
复制
127.0.0.1 mongodb.myurl.com

出于某种原因,用Dokku将db链接到我的应用程序并没有添加这一点。我本以为是自动的。当我将数据库链接到应用程序时,应用程序容器的主机文件确实得到了一个mongodb条目。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28484104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档