如何在Electron中使用MongoDB?

23

我目前正在使用Electron和MongoDB构建桌面应用程序。该应用程序的目标是在应用程序本地作用域(而不是服务器上)中收集和存储各个客户的信息。我已经研究了使用node.js的MongoDB,但是我还没有找到在Electron中使用它的方法。


在这里找到您的解决方案:https://www.npmjs.com/~mongodb-js-user - user4520208
3个回答

16

这是一个用于 MongoDB 管理的Electron 应用程序,您可以查看其代码示例以了解如何在 electron 中使用 mongodb。

https://github.com/officert/mongotron

基本上,您可以在主进程中像在 Node.js 中一样正常使用 mongodb,然后通过 ipc 模块 与渲染进程通信。

例如:

渲染进程

<html>
  <head></head>
  <body>
    <script>
    const ipc = require('electron').ipcRenderer;
    const informationBtn = document.getElementById('information-dialog')

    informationBtn.addEventListener('click', function (event) {
      ipc.send('create-user')
    })
    </script>
  </body>
<html>

主进程

const ipc = require('electron').ipcMain
const mongo = require('some-mongo-module')

ipc.on('create-user', function (event) {
  /* MONGODB CODE */
})

我建议你使用在http://electron.atom.io/找到的入门应用程序。


52
MongoDB能否打包到Electron应用程序中,还是需要在客户端机器上单独安装? - user449689
1
@user449689,你找到了关于单独安装的问题的答案吗? - manny
1
我找不到一种打包的方法,而且将其打包也存在许可问题。不过,我现在采用的方法是使用node下载Windows的msi文件和Mac的tgz文件。然后,你可以使用node运行Windows的msiexec.exe,在Mac上只需解压文件夹即可。 - jth_92

0

Realm在Node SDK方面存在严重限制。它只能在主线程上使用,因此,如果您有任何可能需要转向工作线程以消除数据处理瓶颈的情况,那么您就没有运气了。在GitHub问题中,Realm团队已经表示不感兴趣支持工作线程,这对我来说几乎等同于他们并不真正支持Node,并且不关心它。 - Dave Munger

0

我正在使用Electron + React + Typescript,我需要像这样导入mongoose:

const mongoose = window.require("mongoose");
// then you can connect to it like so:
mongoose.connect("mongodb://localhost:27017/test");

这将解决错误:

TypeError: mongoose.connect is not a function

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接