/ / Ako získam prístup k Meteor's MongoDB od iného klienta, zatiaľ čo Meteor beží? - python, mongodb, meteor

Ako pristupujem k MongoDB spoločnosti Meteor od iného klienta, zatiaľ čo Meteor beží? - python, mongodb, meteor

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ď č. 1

Na 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é.