15

在 0.6.5 版本中,可以使用流星开发非 Web 应用程序。我从头开始为 ARM 处理器重建它,但我根本不需要数据库支持。(Mongo 是一个处理器杀手,占用空间很大,我根本不需要它)

ARM 应该只作为 DDP 客户端工作,考虑到这一点,我在没有 mongo 的情况下手动构建它。

并尝试在开始时构建最简单的应用程序可能只有 1 个包(删除所有标准包)

meteor

和服务器文件夹中的一个文件

main = function(argv){
  return "DAEMON"
}

Meteor.setInterval(function(){
  console.log("HellOnWorld");
},1000);

在安装了完整流星的机器上,它按预期工作,但没有安装 mongo,我得到了错误

Unexpected mongo exit code 127. Restarting.
Unexpected mongo exit code 127. Restarting.
Initializing mongo database... this may take a moment.
Unexpected mongo exit code 127. Restarting.
Can't start mongod

显然我没有也想要mongo。

有什么方法可以在不等待 mongo db 的情况下启动流星?

Meteor 团队计划支持其他数据库,因此迟早必须实施。

4

6 回答 6

21

更新

对于较新版本的 Meteor,您需要删除该mongo软件包。mongo 包嵌入在meteor-platform包中。因此,您需要将其删除并添加所有其余部分(来自https://github.com/meteor/meteor/tree/devel/packages/meteor-platform):

meteor remove meteor-platform
meteor add  meteor webapp logging tracker session ddp blaze spacebars templating check underscore jquery random ejson templating check underscore jquery random ejson

那么您的应用程序将不再使用 Mongo :)。

MONGO_URL在开发模式下,您可以通过将环境变量设置为其他值并启动流星来摆脱 mongo 。例如:MONGO_URL=mongodb://nowhere meteor

于 2013-08-31T09:46:39.740 回答
9

事实证明,如果您只是在运行流星之前设置任何 MONGO_URL 环境变量,它将不会启动其本地 MongoDB!非常适合测试不依赖于 Mongo 的包。

前:

$ meteor test-packages ./
Testing fortawesome:fontawesome-compat...
[[[[[ Tests ]]]]]

=> Started proxy.
=> Started MongoDB.
=> Started your app.

=> App running at: http://localhost:3000/

$ MONGO_URL=mongodb://mysql.com meteor test-packages ./  # haha
Testing fortawesome:fontawesome-compat...
[[[[[ Tests ]]]]]

=> Started proxy.
=> Started your app.

=> App running at: http://localhost:3000/

看马,没有蒙戈!

我已经确认没有启动 mongo 进程,也没有.meteor/local/db创建文件夹。

于 2014-11-28T02:43:11.377 回答
7

在 Meteor 0.6.5 中,您可以将TingoDb(MongoDB API 的 Node.js 实现)嵌入您的 Meteor 包中:

1) 转到您的捆绑包中的programs/server目录,然后npm install tingodb将 TingoDb 添加到您的捆绑包中。

2) 在 的顶部附近programs/server/packages/mongo-livedata.js,与所有其他Npm.require语句一起,添加以下行

var Db = Npm.require('tingodb')().Db;

3) 在同一个文件 ( programs/server/packages/mongo-livedata.js) 中替换以下代码块

MongoDB.connect(url, options, function(err, db) {
  if (err)
    throw err;
  self.db = db;

  Fiber(function () {
    // drain queue of pending callbacks
    _.each(self._connectCallbacks, function (c) {
      c(db);
    });
  }).run();
});

使用此代码:

var db = new Db('path/to/your/db/directory', {});
self.db = db;
Fiber(function () {
  _.each(self._connectCallbacks, function (c) {
      c(db);
    });
}).run(); 

path/to/your/db/directory可以在任何地方,但默认情况下是相对于你的包中的目录programs/server

4) 要运行你的 Meteor 包,它希望你导出一个名为MONGO_URL. 您可以深入研究代码并删除对此的检查,但由于它从未使用过,您可以轻松导出 fake MONGO_URL,就像您的捆绑README文件中的那个:

export MONGO_URL='mongodb://user:password@host:port/databasename'

5) 从你的包的基目录运行node main.js.

警告购买者:显然你在这里搞乱了 Meteor 的内部结构,这几乎肯定会在未来的版本中中断。

于 2013-10-18T00:56:54.117 回答
5

Meteor 1.2.1 - 刚刚设置

MONGO_URL=none

对于环境变量。(none 不是关键字,任何无效的东西都会阻止 mongo 启动)

于 2015-11-29T02:35:22.487 回答
2

作为一种奇怪的可能性,在正确的端口上创建一个模拟 mongo 服务器,并设置你的环境变量来访问它。我敢打赌,您只需要实施一些握手程序,之后就不会再有流量了。超出了我的能力范围,但它确实具有不需要在事情发生变化时采用代码更改的优势。

于 2013-08-31T22:55:35.177 回答
0

列出的答案不适用于 Meteor 1.x。以下是我在没有 mongodb 的情况下运行流星的方法,并且不需要修改流星中的任何内容(源代码和包配置)。

  1. git 克隆https://github.com/solderzzc/mongodb-fs
  2. cd mongodb-fs && npm install && node samples/test-server.js

    如果一切顺利,您将看到以下控制台日志

    在此处输入图像描述

  3. meteor create --example 排行榜 && cd 排行榜

    MONGO_URL=mongodb://localhost:27027/fakedb meteor

将点添加到播放器,并使用 mongo 命令行检查:mongo localhost:27027/fakedb

在此处输入图像描述

于 2015-07-17T00:03:58.130 回答