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

use*_*679 9 mongodb meteor meteorite

我正在关注望远镜教程.

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

     $ meteor mongo
    
    Run Code Online (Sandbox Code Playgroud)

我怎么能够:

$ meteor mongo (somehow connect to my remote DB to use the meteor commands in terminal
Run Code Online (Sandbox Code Playgroud)

所以我可以:

$ db.collectionname.insert({ stuff });
Run Code Online (Sandbox Code Playgroud)

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

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

Dav*_*don 22

假设您有一个用户名username,密码PASSWORD,名为的数据库test以及主机名hatch.mongohq.com:

通过外壳连接

$ mongo hatch.mongohq.com:27017/test -u username -p PASSWORD
Run Code Online (Sandbox Code Playgroud)

通过流星连接

$ MONGO_URL="mongodb://username:PASSWORD@hatch.mongohq.com:27017/test" meteor
Run Code Online (Sandbox Code Playgroud)

其他说明

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

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

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


初始化您的数据库

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

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