gpt4 book ai didi

javascript - 以编程方式停止 MongoDB

转载 作者:可可西里 更新时间:2023-11-01 10:02:50 27 4
gpt4 key购买 nike

我正在开发一个使用 Node.JS、Electron 的应用程序。这个应用程序将运行它自己的 MongoDB 实例。 Mongo 的启动正在使用以下代码:

child = childProcess.exec(`mongod --dbpath ${appConfig.dbConfigPath}`);

但是,当用户退出程序时,我想停止mongo。我试过以下,全部取自MongoDB Documentation

child = childProcess.exec('mongod --shutdown');

child = childProcess.exec(`kill -2 ${child.pid}`);

但这些都没有关闭进程。

正在开发此应用程序以在 windows 平台上运行。

为清楚起见,这是我的应用配置文件。 init() 函数是从我的 main.js 中执行的。 shutdown() 在 windowMain.on('close') 中执行。

校准.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();

主要.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;
});
});

非常感谢任何帮助。

最佳答案

您可以使用 Ipc 通过您的 js 文件发送订单。

在你定义 Electron 的 main.js 中,你可以把这个:

ipcMain.on("shutDownDatabase", function (event, content) {
// shutdown operations.
});

然后在您的应用程序代码的某些部分,您可以放置​​如下函数:

function sendShutdownOrder (content){
var ipcRenderer = require("electron").ipcRenderer;
// the content can be a parameter or whatever you want that should be required for the operation.
ipcRenderer.send("shutDownDatabase", content);
}

另外我认为你可以使用 Electron 的事件来关闭你的数据库,它会监听你启动 electron 时创建的 mainWindow 的事件

    mainWindow.on('closed', function () {
// here you command to shutdowm your data base.
mainWindow = null;
});

有关 IPC 的更多信息,请参阅 here和有关窗口事件的信息here .

关于javascript - 以编程方式停止 MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39353342/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com