Метеор без монго
С выпуском 0.6.5 можно разработать не веб-приложения с метеор.
Я перестраиваю его с нуля для процессора ARM, но я вообще не хочу поддерживать БД. (Монго - процессорный убийца, должен иметь высокий след, и мне это просто не нужно)
ARM должен работать только как клиент DDP, имея в виду, что я создаю его вручную без mongo.
И попытался создать простейшее приложение
только 1 пакет при запуске (все стандартные пакеты удалены)
meteor
и один файл в папке сервера
main = function(argv){
return "DAEMON"
}
Meteor.setInterval(function(){
console.log("HellOnWorld");
},1000);
На машине с полной установкой метеора работает как и ожидалось
но без монго я получил ошибки
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 db?
Команда Meteor планирует поддерживать другие db, поэтому она должна быть реализована рано или поздно.
Ответы
Ответ 1
UPDATE
Для более новых версий 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:).
В режиме dev вы можете избавиться от mongo, установив переменную среды MONGO_URL
на что-то еще и начать метеор. Например: MONGO_URL=mongodb://nowhere meteor
Ответ 2
Оказывается, если вы просто установите переменную окружения 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
.
Ответ 3
В Meteor 0.6.5 вы можете вставить TingoDb, реализацию Node.js API MongoDB, вместо этого: h3 >
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
. Вы можете погрузиться в код и удалить проверки для этого, но так как он никогда не использовался, вы можете так же легко экспортировать поддельный MONGO_URL
, как тот, что находится в вашем файле README
:
export MONGO_URL='mongodb://user:[email protected]:port/databasename'
5) Из каталога базового каталога пакетов node main.js
.
Предостережение emptor: очевидно, что вы здесь возились с внутренними структурами Meteor, и это почти наверняка сломается с будущими версиями.
Ответ 4
Метеор 1.2.1 - Просто установите
MONGO_URL=none
для переменной среды. (ни один не является ключевым словом, что-то недействительное появляется, чтобы предотвратить запуск манго)
Ответ 5
Как странная возможность, сделайте макет mongo-сервера на правом порту и настройте переменную окружения для доступа к ней. Я бы поспорил, что вам нужно только несколько подпрограмм рукопожатия, и после этого больше нет трафика. Помимо моих возможностей, но у него есть то преимущество, что не нужно принимать изменения кода при сдвиге вещей.
Ответ 6
Перечисленные ответы не работают с Meteor 1.x.
Следующим является мой способ запускать метеор без mongodb и не нуждается в изменении чего-либо (ни исходного кода, ни конфигурации пакетов) в meteor.
- git clone https://github.com/solderzzc/mongodb-fs
-
cd mongodb-fs && & npm install && & node samples/test-server.js
вы увидите следующий журнал консоли, если все будет хорошо
![enter image description here]()
-
создание метеора - примерная таблица лидеров и && & cd leaderboard
MONGO_URL = mongodb://localhost: 27027/fakedb meteor
Добавьте точку к проигрывателю и проверьте с помощью командной строки mongo:
mongo localhost: 27027/fakedb
![enter image description here]()