在本地使用“meteor mongo”但连接远程数据库

9
我正在跟随望远镜教程学习。
  1. I created a /client/collections/myfile.js
  2. I'm on localhost, but I'm launching Meteor with remote DB hosted on MongoHQ instead of using Meteor's local DB.
  3. In this tutorial I'm told to insert a new post by opening the Mongo console.

     $ meteor mongo
    

我该如何:

$ 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将哪个集合作为子集推送到客户端吗?

我想在本地计算机开发和实际的live dev.mysite.com上使用相同的数据库(远程托管在MongoHQ),这样当我部署到该开发站点时,我在数据库中所做的任何事情也会出现并准备就绪。

1个回答

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集合,以便它们可以在客户端和服务器上使用。更多详细信息请参见此处

  2. 连接远程数据库比本地连接慢得多,因此不建议在开发中使用。

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


初始化你的数据库

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

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

谢谢David。这里有一个用例场景,我无法理解:我想创建安全角色并将它们存储在数据库中(管理员、主持人等),然后将这些角色分配给特定的用户。处理本地数据库实例与远程数据库不同,我有点迷失如何实现这一点。 - user1447679
我需要使用固定装置吗?如果服务器启动时账户和角色不存在,那么创建它们的位置在哪里? - user1447679
非常感谢。现在我明白了! - user1447679
很高兴能够帮忙。我还建议查看roles包。 - David Weldon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接