javascript - 如何将数据库系统添加到WebGL应用程序

标签 javascript json node.js database opengl-es

我目前正在开发一个 WebGL 草图绘制项目,用户可以在该项目中在 html Canvas 上绘制任意对象。 JavaScript 库和文件都存储在 Node.js 服务器上,当前每次软件运行时都会在本地启动。基本上,用于保存页面上所有绘制对象的所有功能都已经实现,其中绘图被编写为 JSON 对象,但下一步是将这些对象保存到数据库,在数据库中它们可以映射到用户 ID。我还需要实现一个登录系统,用户可以登录并能够从数据库中选择以前绘制的对象进行编辑。

如果这只是一个普通的网站,我可能只会使用express.js 或类似的东西,但由于 View 基本上完全在WebGL 中呈现,我认为框架不能很好地使用这种构造。

鉴于我目前只需要创建一个登录系统并实现将 JSON 对象持久保存到数据库的功能,是否有任何框架或现有软件可以满足系统的指定需求?

最佳答案

关于身份验证,我建议查看 OAuth并使用现有的身份提供商(例如 GoogleFacebook 等)。您仍然可以保留用户的个人资料,但不必处理身份验证、授权、安全等所有复杂问题。

有大量 JavaScript 库可用于处理 OAuth/OAuth2 交互。有些甚至有内置的身份提供商。以下是几个返回各种可能有用的库的链接:

https://www.npmjs.com/search?q=oauth2
https://www.google.com/search?q=javascript%20oauth2%20library

对于数据库,您有很多存储原始 JSON 的选项。我最近在 JavaScript 项目中使用的一些是 PostgreSQL , MongoDB ,和ArangoDB 。您可以找到编写良好的 JS 库来与其中任何一个进行交互。

要考虑的另一件事是,您是否想在服务器上安装数据库或使用托管解决方案,例如 RDSDynamoDB (可从亚马逊购买)。

无论您选择何种身份验证和持久性选项,您都可能会使用与此类似的模式:

  • 您的 Node.js 服务器部署在互联网上可访问的位置,它公开 WebGL 应用程序、身份验证和保存/加载草图的端点。

  • 当用户导航到 Node.js 服务器上的 WebGL 应用程序端点时,他们需要进行身份验证(这将利用 Node.js 服务器上的身份验证端点)。

  • 当用户在您的 WebGL 应用程序中请求“保存”时,您会将其草图(及其授权 token )的 JSON 表示形式提交到 Node.js 服务器的“保存”端点。

  • 此“保存”端点会验证用户的授权 token 并将 JSON 插入到您选择的任何数据库中。

  • “加载”端点的工作方式与“保存”端点类似,但方向相反。用户要求提供具体的草图。草图的身份(id、名称等)与其授权 token 一起发送。 Node.js 服务器上的“加载”端点会验证其授权 token ,然后在数据库中查询草图。

这里要注意的关键模式是用户不会直接向您的数据库发送请求。您的 WebGL 应用程序应该与您的 Node.js 服务器进行通信,并且应该与您的数据库进行通信。这对于控制安全性、性能和 future 的更新至关重要。

希望这能让您了解下一步该去哪里。

<小时/>

根据评论进行编辑:

我四处寻找 Node.js + PostgreSQL 指南,但没有找到任何我愿意推荐的内容。不过我确实找到了这个 JS 库,我会检查一下:

https://github.com/vitaly-t/pg-promise

对于 MongoDB,我只会使用他们的官方指南:

https://docs.mongodb.org/getting-started/node/introduction/

关于javascript - 如何将数据库系统添加到WebGL应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36635741/

相关文章:

javascript - AngularJS 自定义指令双向绑定(bind)

json - 我可以使用 Scala Lift-json 库将 JSON 解析为 Map 吗?

javascript - 从函数内检索变量

xml - Json、XML 和 RDF 之间的区别

node.js - 在Electron BrowserWindow中进行全文本搜索

node.js - 启用 --trace-events-enabled 的 Node v8.5 不生成跟踪日志文件

javascript - 如何将信息从 Content_script 传递到弹出页面? (Chrome 扩展)

javascript - 使用 HtmlUnit 等待 Javascript

javascript - RequireJS 和 Angular 路由

javascript - node.js mongodb - collection.find().toArray(callback) - 回调不会被调用