流星连接到另一个 mongodb(不是本地的)

Posted

技术标签:

【中文标题】流星连接到另一个 mongodb(不是本地的)【英文标题】:meteor connection to an other mongodb (not the local one) 【发布时间】:2015-11-12 21:32:53 【问题描述】:

我已经启动了一个 localhost:207017 mongod 3.0.5,它是一个完全独立于流星的 mongodb 我想从流星(有一个本地 mongodb)连接到它。 我在How do I use an existing MongoDB in a Meteor project? 中看到我们可以使用:export MONGO_URL=mongodb://localhost:27017/your_db 将“某物”链接到我的 mongo 服务器。

问题:

    这个 mongo_url 环境变量存储在哪里,即本地存储在我的流星应用程序中?它是专门针对我正在处理的流星应用还是针对所有流星的。 如何回到我的应用程序的本地 mongodb 使用以下代码,不会在 your_db 中创建任何集合,但我有一个名为 meteor_accounts_loginServiceConfiguration 的新集合(空)。

在meteor中,我使用的是meteor doc site中的todo示例

.js 文件

Tasks = new Mongo.Collection("tasks");

if (Meteor.isClient) 
  // This code only runs on the client
  Template.body.helpers(
    tasks: function () 
      return Tasks.find();
    
  );

.html 文件

<body>
  <div class="container">
    <header>
      <h1>Todo List</h1>
    </header>

    <ul>
      #each tasks
        > task
      /each
    </ul>
  </div>
</body>
<template name="task">
  <li>text</li>
</template>

任何人都知道这一切是如何设置和工作的,以及如何解决它?

最好的,

G

【问题讨论】:

【参考方案1】:

环境变量可以在您启动应用程序时在命令行上设置,因此您无需在整个 shell 环境中进行设置。这样做意味着它对于该 shell 是全局的,或者对于所有 shell 会话都是全局的,具体取决于您是否永久设置。

但对我来说,简单的迁移只需几个步骤:

    在一个窗口中启动流星应用程序

    在另一个窗口中,通过正在运行的端口连接到它的本地 MongoDB。 (在本例中为 3001 ),只是为了检查:

    mongo --port 3001
    

    在报告连接并退出 shell 后,我运行 mongoexportmongoimport 来复制所需的集合:

    mongoexport --port 3001 -d meteor -c cards | mongoimport -d meteor -c cards
    

    我只是将输出从出口输送到进口,这很简单。此外,我选择保留相同的数据库名称,但您可以根据需要进行更改。为您想要的每个集合重复导出。

    停止停止本地服务器的流星应用程序,然后使用meteor 命令之前发出的环境设置重新启动。同样,我将所有内容都放在“流星”数据库中,这就是我要连接的内容:

    MONGO_URL="mongodb://localhost:27017/meteor" meteor
    

应用启动时,会从迁移的集合中读取数据并完美显示。

对于偏执狂,如果您没有注意到流星启动中的输出没有报告本地 MongoDB 启动,那么您可以检查正在运行的进程并看到只有您的“全局”MongoDB 是唯一运行的实例。

当然,如果你指向另一台机器,那么应​​用服务器上没有运行 MongoDB。

【讨论】:

以上是关于流星连接到另一个 mongodb(不是本地的)的主要内容,如果未能解决你的问题,请参考以下文章

Meteor -- 如何连接到 mongodb? [复制]

如何将流星连接到现有后端?

从 docker 容器连接到本地 mongodb

无法从另一个容器连接到 mongodb docker 容器

如何防止流星重新连接到服务器

为流星的 mongo 数据库设置密码