私はNode.JS、Electronを使用してアプリケーションを開発中です。このアプリケーションはMongoDBの独自のインスタンスを実行します。モンゴの開始までは、次のコードを使用して作業している:ユーザーがプログラムを終了するとプログラムでMongoDBを停止する
child = childProcess.exec(`mongod --dbpath ${appConfig.dbConfigPath}`);
は、しかし、私はモンゴを停止したいです。私はすべてがMongoDB Documentation
child = childProcess.exec('mongod --shutdown');
と
child = childProcess.exec(`kill -2 ${child.pid}`);
まだこれらのいずれもがプロセスをシャットダウンしているから取られ、次のことを試してみました。
このアプリケーションはWindowsプラットフォーム上で動作するように開発されています。
わかりやすくするために、ここに私のアプリの設定ファイルがあります。 init()関数はmain.jsから実行されます。 shutdown()はwindowMain.on( 'close')で実行されます。
calibration.js
'use strict';
const childProcess = require('child_process');
const fileUtils = require('./lib/utils/fileUtils');
const appConfig = require('./config/appConfig');
let child;
class Calibration {
constructor() {}
init() {
createAppConfigDir();
createAppDataDir();
startMongo();
}
shutdown() {
shutdownMongo();
}
}
function createAppConfigDir() {
fileUtils.createDirSync(appConfig.appConfigDir);
}
function createAppDataDir() {
fileUtils.createDirSync(appConfig.dbConfigPath);
}
function startMongo() {
child = childProcess.exec(`mongod --dbpath ${appConfig.dbConfigPath}`);
console.log(child.pid);
}
function shutdownMongo() {
console.log('inside shutdownMongo');
//This is where I want to shutdown Mongo
}
module.exports = new Calibration();
main.js
'use strict'
const { app, BrowserWindow, crashReporter, ipcMain: ipc } = require('electron');
const path = require('path');
const appCalibration = require('../calibration');
appCalibration.init();
const appConfig = require('../config/appConfig');
let mainWindow = null;
ipc.on('set-title', (event, title) => {
mainWindow.setTitle(title || appconfig.name);
})
ipc.on('quit',() => {
app.quit();
})
// Quit when all windows are closed.
app.on('window-all-closed', function() {
if (process.platform != 'darwin') {
app.quit();
}
});
// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
app.on('ready', function() {
// Create the browser window.
mainWindow = new BrowserWindow({ center: true });
mainWindow.maximize();
mainWindow.setMinimumSize(770, 400);
mainWindow.loadURL(path.join(`file://${__dirname}`, '../ui/index.html'));
mainWindow.on('close',() => {
console.log('Inside quit')
appCalibration.shutdown();
app.quit();
});
mainWindow.on('closed', function() {
mainWindow = null;
});
});
どのような援助が大幅に高く評価されています。
注文を送信し、あなたのMongoDB –
@PauloGaldoSandovalをシャットダウンするIPCを使用することができ、コメントありがとうございました。私はちょうど電子を理解し始めているので、私の無知を許してください。あなたは例を投稿するほど親切ですか?ありがとうございました –