使用 GraphQL 和 MongoDB 的 Electron 应用程序

Posted

技术标签:

【中文标题】使用 GraphQL 和 MongoDB 的 Electron 应用程序【英文标题】:Electron app to utilize GraphQL and MongoDB 【发布时间】:2020-08-13 02:13:33 【问题描述】:

Electron 应用程序是在 2 年前构建的,它允许您在设定的时间与个人创建活动(想想创建约会/会议)。 该应用程序是使用以下内容构建的:

聚合物前端 几个简单的 php 脚本(每个操作 1 个脚本文件)例如:get.php、add.php 等... Node.js(电子应用) mysql

应用程序运行正常,当添加新活动时不是真正实时的,需要导航到不同的“页面”或刷新以引入新数据。

我决定使用新技术重新设计该应用程序,并希望使其更像一个“实时”应用程序。

这就是 graphql(从未体验过)和 mongodb(以前使用过)的用武之地。 至于 php 脚本,我将用 expressjs 替换后端。

前端是使用 Polymer 构建的,并且有一个称为 ajax 调用的组件。这是我目前安静的电话。

<iron-ajax 
   id="getPost"
   auto
   url="http://blitz.com/Activity/getActivity.php"  <!--getName.php--> etc...
   handle-as="json"
   on-response="handleResponse"
   last-response="activityResponse">
</iron-ajax>

我相信,如果我可以将其“实现”到 GraphQL 调用中,我将能够了解更多关于 GraphQL 的工作原理和实现方式的信息。还有关于 GraphQL,如果我确实需要托管应用程序,那么它将在哪里托管?据我了解,GraphQL 与 rest 非常相似。

数据库目前分为几个表,如果我对应用程序有更多的想法,会继续增加表的数量,但现在它只有 USERS 表,ACTIVITIES 表,POSTS 表。 后续的附加功能就像登录功能,我需要弄清楚添加新表是否是正确的调用,或者我是否会像谷歌登录一样使用。

如果我使用 mongodb,因为它是一个非关系型数据库。此应用程序的最佳实践是什么?

我是否只有 1 个数据库和 1 个集合来处理所有信息? 假设收集基于以下信息


 id: 1,
 host_name:"bob",
 guest_name:"bill",
 activity:"basketball",
 time:"12:12:12 01/01/01",
 answer:"accepted"

由于这是一个电子应用程序,我可以将所有内容捆绑到一个应用程序中,只托管后端和数据库本身,express + mongodb。

【问题讨论】:

【参考方案1】:

可能你需要试试GraphQL Subcriptions。

对于 Mongodb,保持它像无模式的关系一样,以使其易于访问。 Source

【讨论】:

以上是关于使用 GraphQL 和 MongoDB 的 Electron 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Express-graphql“在运行突变和查询时无法使用 mongodb 读取未定义的属性‘集合’”

如何在不创建 Mongoose 模型的情况下将 GraphQL 与 Mongoose 和 MongoDB 一起使用

使用 MongoDB 时的 Graphql 接口

如何在使用 graphql 和 mongodb 的查询中使用“where”参数?

使用 Prisma + MongoDB + GraphQL 的嵌套关系返回 null

使用 GraphQL 和 MongoDB 的 Electron 应用程序