Digamos que há um servidor MongoDB em execução para um cliente GUI (por wxPython ) por um tempo.
Como eu poderia conectar meu novo projeto Meteor ao MongoDB já existente ?
Digamos que há um servidor MongoDB em execução para um cliente GUI (por wxPython ) por um tempo.
Como eu poderia conectar meu novo projeto Meteor ao MongoDB já existente ?
Respostas:
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 db que deseja usar.
export MONGO_URL=mongodb://localhost:27017/my_database_name
colocará os dados em um banco de dados chamado my_database_name
. Ele quis dizer que se você quiser, você pode fazer export MONGO_URL=mongodb://localhost:27017/meteor
. Achei que eu aconselharia nomear o nome do seu banco de dados igual ao do seu projeto.
Usamos npm
:
Crie um package.json
arquivo com npm init
, se ainda não tiver um.
Insira e modifique a seguinte linha nesse arquivo (substituindo todos os <...>
's):
"scripts": {"meteor": "MONGO_URL=mongodb://<USER>:<PASSWORD>@<SERVER>:<PORT>/<DB> meteor"}
npm run meteor
Nos comentários à resposta de Danny, Tom Wijsman recomenda patchear packages / mongo-vivata / mongo_driver.js, linha 21. Um lugar melhor é app / meteor / run.js, linha 460. Desta forma, a variável de ambiente ainda é selecionada se presente , como ao executar o Meteor no Heroku. Basta alterar o mongodb codificado padrão: //127.0.0.1 para a localização 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, poderá transferir dados de um servidor MongoDB em execução iniciando seu aplicativo Meteor e, em seguida:
mongo --port 3002
Isso conectará você ao servidor Mongo do aplicativo Meteor. Agora use db.copyDatabase assim:
db.copyDatabase('myappDatabase', 'meteor', 'localhost');
Isso copiará o banco de dados myappDatabase de um servidor MongoDB em execução na porta padrão no localhost, para o servidor Mongo do aplicativo Meteor. O nome do banco de dados que o aplicativo Meteor usa é 'meteoro'.
Basta copiar os dados para o banco de dados Meteor MongoDB - não há razão para tentar conectar o Meteor ao banco de dados existente e correr o risco de sobrescrever coisas.
Use mongoexport
para despejar suas coleções individualmente e, a seguir, mongoimport
para importar os arquivos para o banco de dados nomeado meteor
na instância do Meteor MongoDB. A instância Meteor 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
.
Consulte a documentação se você não estiver familiarizado com importação / exportação no MongoDB.
app/lib/mongo_runner.js
decide como iniciá-lo (você pode nem mesmo exigir o código de inicialização, portanto, veja como desativá-lo) A conexão para ele parece acontecer dentro packages/mongo-livedata/mongo_driver.js
, eu acho que você pode simplesmente alterar o parâmetro url na linha 21. Se você quiser saber seu valor, insira console.log(url);
na linha antes disso, reinicie o Meteor e observe sua saída do Meteor de perto. Certifique-se de realmente chamar o Meteor uma vez em seu aplicativo para que seja acionado ...
console.log(url);
e consegui a informação! Vou sugerir que você faça isso o mais completo possível, porque acredito que isso realmente ajuda a comunidade, ou pelo menos, pessoas como eu ainda não estão familiarizadas com meteoros ~
Tudo o que fiz foi adicionar o IP do meu servidor digital de gotas ocean, em vez de localhost, e funcionou:
env: {
ROOT_URL: 'http://yourdomain.com',
MONGO_URL: 'mongodb://104.236.24.66:27017/meteor',
PORT: 3002,
},
EDITAR: use o MUP para implantar seus projetos de meteoros: 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 2 contêineres, hospedando assim o aplicativo e o mongo na mesma VM (servidor). Seu mongoDB não deve ser acessível do IP público por razões de segurança.
Você tem que manter seu aplicativo rodando em uma janela de terminal e então abrir outra e digitar "meteoro mongo" e deve funcionar!