【问题标题】:Using "meteor mongo" on localhost but with remote Database在本地主机上使用“meteor mongo”但使用远程数据库
【发布时间】:2014-03-30 01:49:33
【问题描述】:

我正在关注望远镜教程。

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

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

我想使用同一个数据库(由 MongoHQ 远程托管)用于我的本地主机开发和我实际的实时 dev.mysite.com,所以当我部署到这个开发站点时,我在数据库中所做的任何事情都是也在那里,准备出发。

【问题讨论】:

    标签: mongodb meteor meteorite


    【解决方案1】:

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

    通过外壳连接

    $ 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,用于重置并连接到所述数据库。


    初始化您的数据库

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

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

    【讨论】:

    • 谢谢大卫。这是一个我无法理解的用例场景:我想创建安全角色并将它们存储在数据库中(管理员、主持人等),然后将这些角色分配给特定用户。处理本地数据库实例与远程数据库相比,我对如何实现这一点有点迷茫。
    • 我可以在哪里使用灯具?如果不存在,则在服务器启动时创建帐户和角色?
    • 非常感谢。现在说得通了!
    • 我很高兴能提供帮助。我还建议查看roles 包。
    猜你喜欢
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多