2015-10-24 14 views
13

Ho un'app che funziona su express e comunica con mongodb. Questo è il modo di iniziare la mia app:Modo corretto di avviare mongodb ed express?

1.Start MongoDB

mongod --dbpath data --config mongo.conf" 

2.Avviare espresso

node server.js 

La mia domanda è: esiste un modo per combinare questi? So che il nodo è single threaded quindi non possiamo eseguire sia express che mongo da server.js ma qual è il modo corretto? È possibile avviare mongo da un file javascript usando npm?

Edit:

posso correre mongod --dbpath dati e prompt dei comandi diversi separatamente su due nodo server.js. La mia domanda è di avviarli da un file (se possibile).

+1

stai correndo su Windows? – Hristo

+0

@Chris Sono su Windows. il mio server di distribuzione è linux. – WhatisSober

risposta

10

start crea nuove cmd in Windows qui è la mia configurazione:

"scripts": { 
    "prestart": "start mongod --config ./data/mongod.cfg", 
    "start": "node ./server/bin/www", 
    "poststart": "start mongo admin --eval \"db.getSiblingDB('admin').shutdownServer()\"", 
    "pretest": "start mongod --dbpath data", 
    "test": "mocha test", 
    "posttest": "start mongo admin --eval \"db.getSiblingDB('admin').shutdownServer()\"" 
}, 

Buona fortuna!

+0

Per chiunque altro nella stessa situazione, ho avuto la mia cartella mongo in una cartella di pari livello, quindi ho cambiato la mia configurazione in modo simile a questo "prestart": "cd .. & md mongo-db e start mongod --dbpath./mongo-db "' – Evildonald

-1

Sì. Utilizzando il package.json è possibile definire gli script:

{ 
    "name": "my package", 
    "version": "1.0.0", 
    "scripts": { 
    "start": "mongod --dbpath data --config mongo.conf && node server.js", 
    }, 
    "devDependencies": { 
    "express": "*" 
    } 
} 

Calling npm start eseguirà lo script di avvio definito nel package.json

Per ulteriori vedere https://docs.npmjs.com/misc/scripts

+0

funziona su Windows? – Hristo

+0

Lo penserei fintanto che NODE_ENV e NODE_PATH sono impostati in windows env. – drowzy

+5

Penso che ci sia un problema qui, dal momento che mongod non viene avviato nel nodo in background server.js non viene eseguito.Non ho testato il tuo codice in modo da potermi sbagliare. :) – Hristo

1

Se si esegue su Linux si potrebbe usa il file package.json per definire script che fanno esattamente ciò di cui hai bisogno.

Ci sono alcuni problemi ma nemmeno:

Se si sta usando Linux si può usare

"mongod --fork --dbpath data --config mongo.conf" e "node index.js" utilizzare MongoDB e eseguire l'applicazione, allo stesso tempo e che avrebbe funzionato bene.

Ma se sei su Windows devi usare una finestra della console separata per mongo e una separata per l'app.

Se si esegue su Windows avrei probabilmente usare i miei script package.json a correre MongoDB e vorrei correre la mia applicazione in un altro terminale in quanto è più facile da digitare node index.js rispetto alla parte mongod.

+0

Grazie, Chris. C'è un modo per fare una statistica per "mongod --dbpath data" da un file javascript del nodo like startdatabase.js. – WhatisSober

+0

@WhatisSober È necessario eseguire un processo con argomenti della riga di comando in questo caso che ritengo sia più noioso della configurazione del file package.json e dell'esecuzione di una finestra separata per l'app. È solo triste che Windows non offra la bandiera --fork. – Hristo

1

Impostare mongo per eseguire come servizio di Windows, ho sempre mongo on e ha funzionato per gli ultimi 3 anni sulla mia macchina di sviluppo. Sulla macchina di distribuzione mongo up per essere controllato da un demone.

Problemi correlati