Como eu uso um MongoDB existente em um projeto do Meteor?

Digamos que há um servidor MongoDB em execução para um cliente da GUI (por wxPython ) por um tempo.

Como eu poderia conectar meu novo projeto Meteor ao meu MongoDB já existente ?

Use a variável de ambiente MONGO_URL. Algo como:

export MONGO_URL=mongodb://localhost:27017/your_db 

Substitua your_db por meteor ou qualquer outro db que você queira usar.

Nós usamos npm :

  • Crie um arquivo package.json com npm init , se você não tiver um.

  • Digite e modifique a seguinte linha nesse arquivo (substituindo todos os < ...> ):

 "scripts": {"meteor": "MONGO_URL=mongodb://:@:/ meteor"} 
  • Você pode então começar o meteor com apenas npm run meteor

Nos comentários para a resposta de Danny, Tom Wijsman recomenda o patch de pacotes / mongo-livedata / mongo_driver.js, linha 21. Um lugar melhor está em app / meteor / run.js, linha 460. Desta forma, a variável de ambiente ainda é capturada se estiver presente , como ao executar Meteor on Heroku. Basta alterar o mongodb codificado padrão: //127.0.0.1 para o local do seu servidor MongoDB.

Você pode usar db.copyDatabase para fazer isso, com uma ressalva de que há um bug e você não pode atualizar os dados no Meteor. Veja https://github.com/meteor/meteor/issues/61

Se você estiver usando a versão de desenvolvimento do Meteor, você pode transferir dados de um servidor MongoDB em execução, iniciando seu aplicativo Meteor e fazendo:

 mongo --port 3002 

Isso irá conectá-lo ao servidor Mongo do aplicativo Meteor. Agora use db.copyDatabase assim:

 db.copyDatabase('myappDatabase', 'meteor', 'localhost'); 

Isso irá copiar o myappDatabase do database de um servidor MongoDB em execução na porta padrão no host local, para o servidor Mongo do aplicativo Meteor. O nome do database que o aplicativo Meteor usa é ‘meteor’.

Basta copiar os dados para o database Meteor MongoDB – não há razão para tentar ligar o Meteor ao database existente e arriscar a sobrescrever as coisas.

Use o mongoexport para despejar suas collections individualmente, e então importe os arquivos para o database chamado meteor na instância do Meteo MongoDB. A instância Meteo MongoDB é executada na porta 3002 com bind_address 127.0.0.1, e os arquivos de dados estão no subdiretório do projeto Meteor .meteor/local/db .

Veja a documentação se você não estiver familiarizado com a importação / exportação no MongoDB.

Tudo o que fiz foi adicionar o IP do meu servidor Digital droplet do oceano, em vez de localhost, e funcionou:

 env: { ROOT_URL: 'http://yourdomain.com', MONGO_URL: 'mongodb://104.236.24.66:27017/meteor', PORT: 3002, }, 

EDIT: use MUP para implantar seus projetos de meteors: https://github.com/zodern/meteor-up

 env: { ROOT_URL: 'https://www.example.com', MONGO_URL: 'mongodb://localhost/meteor', }, 

O Mup usa o Docker e “vincula” seus dois contêineres, hospedando o aplicativo e o mongo na mesma VM (servidor). Seu mongoDB não deve estar acessível a partir do IP público por motivos de segurança.

Você tem que manter seu aplicativo em execução em uma janela de terminal, em seguida, abrir outro e digitar “meteor mongo” e deve funcionar!