Chcel by som získať prístup k Meteor's MongoDB z klienta Python, zatiaľ čo Meteor beží.
Nemôžem spustiť mongod, pretože Meteorova databáza je zamknutá.
Ako získam prístup k databáze z iného klienta?
odpovede:
67 pre odpoveď č. 1Na meteor
príkaz poskytuje čistú cestu. Ak chcete získať adresu URL pre bežiaceho mongod:
meteor mongo -U
ktoré môžete analyzovať z pythonu.
37 pre odpoveď č. 2
Keď spustíte systém Meteor, spustí vás mongod na porte 3002 meteor
príkaz a uloží mongo dátový súbor do .meteor/local/db
Výstup z ps aux | grep "mongod"
zobrazuje príkaz mongod, ktorý meteor používa:
/usr/local/meteor/mongodb/bin/mongod --bind_ip 127.0.0.1 --smallfiles --port 3002 --dbpath /path/to/your/project/.meteor/local/db
Preto jednoducho pripojte svojho klienta s mongom. V pythone:
>>> import pymongo
>>> con = pymongo.Connection(host="127.0.0.1", port=3002)
>>> con.database_names()
[u"meteor", u"local"]
UPDATE: Bohužiaľ vykonanie zmien priamo v Mongo týmto spôsobom sa neodzrkadlí naživo v aplikácii, ale zmeny sa prejavia pri načítaní celej stránky.
6 pre odpoveď č. 3
Použi Pokyny na nasadenie meteora
Príkaz bude vyzerať takto:
PORT=3000 MONGO_URL=mongodb://localhost:27017/myapp node bundle/main.js
2 pre odpoveď № 4
Nájdete ho aj z kódu na strane servera pomocou:
process.env.MONGO_URL
Aj keď túto premennú prostredia nenastavíte, keď je spustená, nastaví sa na predvolenú hodnotu. Zdá sa, že je to tak, ako sa interne nachádza (balíčky / mongo / remote_collection_driver.js)
Ten je daný meteor mongo -U
Zdá sa, že rekonštruuje predvolenú doménu / ip a db-name, ale používa port uložený v súbore.
Môžete to umiestniť kamkoľvek do priečinka servera a prečítať ho z príkazového riadku.
console.log("db url: " + process.env.MONGO_URL);
Nastavil som webovú stránku, aby sa zobrazovala na dvojnásobnú kontrolu v testoch selénu, ktoré používame v testovacej databáze, a nie na prepísanie živých údajov.
0 pre odpoveď č. 5
A tu shell skript na získanie Mongo URI a Mongo Database:
#!/bin/bash -eux
read -s -p "Enter Password: " password
cmd=$(meteor mongo --url myapp.meteor.com << ENDPASS
$password
ENDPASS)
mongo_uri=$(echo $cmd | cut -f2 -d" ")
mongo_db=$(echo $mongo_uri | cut -d/ -f 4)
#my_client_command_with MONGODB_URI=$mongo_uri MONGO_DB=$mongo_db
`` ``
-1 pre odpoveď č. 6
Pokiaľ ide o 10-sekundové oneskorenie pri aktualizáciách: Ocas MongoDB oplog! Viac informácií o tom, ako to urobiť, nájdete tu:
http://meteorhacks.com/lets-scale-meteor.html
Uistite sa, že inštalujete inteligentné kolekcie a používate ich (vytvorte si kolekcie pomocou Meteor.SmartCollection namiesto Meteor.Collection) a zistíte, že aktualizácie sú v podstate okamžité.