2015-10-24 7 views
13

私は急行で実行され、mongodbと通信するアプリを持っています。これらを結合する方法はあります、mongodbとexpressを起動する正しい方法は?

1.Start MongoDBの

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

2.Startエクスプレス

node server.js 

私の質問です:これは私が私のアプリを起動する方法ですか?ノードはシングルスレッドなので、server.jsからexpressとmongoの両方を実行することはできませんが、正しい方法は何ですか? npmを使ってjavascriptファイルからmongoを起動することは可能ですか?

編集:

私は2つの異なるコマンド・プロンプト上で別々に server.js のmongod --dbpathデータノードを実行することができます。私の質問は、(可能であれば)1つのファイルからそれらを開始することです。

+1

Windowsで実行していますか? – Hristo

+0

@Chris私は窓の上にいる。私のデプロイメントサーバはLinuxです。 – WhatisSober

答えて

10

startは、ここでは窓 に新しいCMDを作成し、私の設定です:

"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()\"" 
}, 

幸運!

+0

同じ状況の他の人は、兄弟フォルダのmongoフォルダを持っていたので、設定を "prestart"のように変更しました: "cd ..&md mongo-db&mongod -dbpathを起動してください。/mongo-db "' – Evildonald

-1

はい。あなたのpackage.jsonを使用して、あなたはスクリプトを定義することができます

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

は、Linux上で実行している場合は、よりご覧https://docs.npmjs.com/misc/scripts

+0

これはWindows上で動作しますか? – Hristo

+0

Windows envでNODE_ENVとNODE_PATHが設定されている限り、私はそう思うでしょう。 – drowzy

+5

ここに問題があると思います。バックグラウンドノードでmongodが起動しないため、server.jsは実際に実行されません。あなたのコードをテストしていないので、間違っている可能性があります。 :) – Hristo

1

についてpackage.json

で定義された起動スクリプトを実行しますnpm startを可能性があり呼び出しますpackage.jsonファイルを使用して、必要なだけのスクリプトを定義します。あなたはMongoDBはを使用して同時にアプリケーションを実行するために

"mongod --fork --dbpath data --config mongo.conf""node index.js"使用することができ、それはうまく動作します

Linuxを実行している場合:

はalthoいくつかの問題があります。

しかし、ウィンドウ上にある場合は、mongo用に別のコンソールウィンドウを使用し、アプリケーション用に別のコンソールウィンドウを使用する必要があります。

Windowsで実行している場合、私はおそらくmongodbを実行するために私のpackage.jsonスクリプトを使用するでしょう。私は他の端末で私のアプリケーションを実行するでしょう。node index.jsよりmongod部分を入力する方が簡単です。

+0

クリスように感謝します。同様のノードstartdatabase.jsのjavascriptファイルの種類から "mongod --dbpath data"を実行する方法がありますか? – WhatisSober

+0

@WhatisSoberこの場合、コマンドライン引数を指定してプロセスを実行する必要があります。これは、package.jsonファイルを設定し、アプリケーション用の別のウィンドウを実行するよりも面倒です。 Windowsが--forkフラグを提供していないのは残念です。 – Hristo

1

Windowsサービスとして動作するようにセットアップするmongoは、常にmongoをオンにしています。これは私の開発マシンで過去3年間働いています。デプロイメントマシンでmongoをデーモンによって制御できるように設定します。

関連する問題