Obrigado por comentar. Eu sei que a solução de @Dror é muito oficial em vez de um hack, mas já atribuí uma resposta antes. Não tenho certeza se é um comportamento bom e permitido alterar / atualizar a "resposta", então?
Drake Guan,
"Você pode alterar a resposta que é aceita ou simplesmente cancelar a aceitação da resposta a qualquer momento." meta.stackexchange.com/a/5235/191226
Mike Graf
1
Muito obrigado por me apontar isso. Estou mais confiante agora.
@SurjithSM export MONGO_URL=mongodb://localhost:27017/my_database_namecolocará 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.
Benjamin Crouzier
1
Isso pode ser feito com algum arquivo de configuração? Tentei com settings.json e não funcionou
Kostanos
1
isso travou completamente meu aplicativo local.
Deborah
14
Usamos npm:
Crie um package.jsonarquivo com npm init, se ainda não tiver um.
Insira e modifique a seguinte linha nesse arquivo (substituindo todos os <...>'s):
'MONGO_URL' não é reconhecido como um comando interno ou externo
Abdul Hameed
1
é uma variável de ambiente, certifique-se de que não haja espaços ao redor do sinal =
malix
9
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:
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 mongoexportpara despejar suas coleções individualmente e, a seguir, mongoimportpara importar os arquivos para o banco de dados nomeado meteorna 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.
Isso significa que devemos entregar a hospedagem mongodb ao meteoro em vez de hospedar por outros meios?
Drake Guan
2
@Drake: A menos que você possa ajustar o Meteor para trabalhar com seu banco de dados. app/lib/mongo_runner.jsdecide 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 ...
Tamara Wijsman
@Drake: Se você quiser que eu coloque meu comentário como uma resposta (se funcionou para você), por favor me avise.
Tamara Wijsman
@TomWijsman: Tentei 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 ~
Drake Guan
muito mais fácil usar o mongochef para copiar e colar dados, em vez dos comandos de exportação / importação. 3t.io/mongochef
Max Hodges
0
Tudo o que fiz foi adicionar o IP do meu servidor digital de gotas ocean, em vez de localhost, e funcionou:
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.
Respostas:
Use a variável de ambiente MONGO_URL. Algo como:
Substitua
your_db
pormeteor
ou qualquer db que deseja usar.fonte
export MONGO_URL=mongodb://localhost:27017/my_database_name
colocará os dados em um banco de dados chamadomy_database_name
. Ele quis dizer que se você quiser, você pode fazerexport 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 comnpm init
, se ainda não tiver um.Insira e modifique a seguinte linha nesse arquivo (substituindo todos os
<...>
's):npm run meteor
fonte
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.
fonte
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:
Isso conectará você ao servidor Mongo do aplicativo Meteor. Agora use db.copyDatabase assim:
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'.
fonte
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 nomeadometeor
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.
fonte
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 dentropackages/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, insiraconsole.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:
EDITAR: use o MUP para implantar seus projetos de meteoros: https://github.com/zodern/meteor-up
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.
fonte
Gastei muito tempo e descobri que isso requer aspas em torno do URL:
fonte
Você tem que manter seu aplicativo rodando em uma janela de terminal e então abrir outra e digitar "meteoro mongo" e deve funcionar!
fonte