在localhost上使用“meteor mongo”但使用远程数据库

时间:2014-02-26 22:29:00

标签: mongodb meteor meteorite

我正在关注望远镜教程。

  1. 我创建了一个/client/collections/myfile.js
  2. 我在localhost上,但我正在使用MongoHQ托管的远程数据库启动Meteor,而不是使用Meteor的本地数据库。
  3. 在本教程中,我被告知要通过打开Mongo控制台来插入新帖子。

     $ meteor mongo
    
  4. 我怎么能:

    $ meteor mongo (somehow connect to my remote DB to use the meteor commands in terminal
    

    所以我可以:

    $ db.collectionname.insert({ stuff });
    

    或者这与“Meteor”无关,在这种情况下,我只使用Meteor之外的Mongo shell?我在“/client/collections/collection.js”中创建的集合只是为了告诉Meteor将哪个集合作为子集推送到客户端?

    我想使用相同的数据库(使用MongoHQ远程托管)进行本地开发,以及我的实际实时dev.mysite.com,所以当我部署到这个开发站点时,我在数据库中所做的任何事情都是也准备好了。

1 个答案:

答案 0 :(得分:22)

假设您的用户名为username,密码为PASSWORD,数据库为test,主机名为hatch.mongohq.com

通过shell连接

$ mongo hatch.mongohq.com:27017/test -u username -p PASSWORD

通过Meteor连接

$ MONGO_URL="mongodb://username:PASSWORD@hatch.mongohq.com:27017/test" meteor

其他说明

  1. 您应该在client目录之外定义Meteor集合,以便它们可以在客户端和服务器上使用。有关详细信息,请参阅this

  2. 您会发现连接到远程数据库比在本地连接要慢得多,因此通常不推荐用于开发。

  3. Meteor在启动时会为您创建一个开发数据库。这也为您提供了非常有用的命令:meteor resetmeteor mongo,以重置并连接到所述数据库。


  4. 初始化数据库

    在服务器上创建一个文件进行初始化 - 例如server/initialize.js。服务器启动时,您可以添加尚不存在的用户或其他文档。例如:

    Meteor.startup(function() {
      if (Meteor.users.find().count() === 0) {
        Accounts.createUser({
          username: 'jsmith',
          password: 'password',
          profile: {
            firstName: 'John',
            lastName: 'Smith'
          }
        });
      }
    });