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

How to add database system to WebGL application

本文关键字:WebGL 应用程序 添加 数据库系统      更新时间:2023-09-26

我目前正在开发一个WebGL草图绘制项目,用户可以在html画布上绘制任意对象。javascript库和文件都存储在node.js服务器上,该服务器当前每次运行软件时都会在本地启动。从本质上讲,保存页面上所有绘制对象的所有功能都是在图形被写成JSON对象的地方实现的,但下一步是将这些对象持久化到数据库中,在那里它们可以映射到用户id。我还需要实现一个登录系统,用户将在该系统中登录,并能够从数据库中选择以前绘制的对象进行编辑。

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

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

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

有大量的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库来与其中任何一个进行交互。

另一件需要考虑的事情是,如果你想在服务器上安装数据库,或者使用RDS或DynamoDB(可从亚马逊获得)等托管解决方案。

不管你选择什么样的身份验证和持久性选项,你都可能使用类似的模式:

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

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

  • 当用户在WebGL应用程序中请求"保存"时,您将向Node.js服务器的"保存"端点提交其草图的JSON表示(以及授权令牌)。

  • 这个"保存"端点验证用户的授权令牌,并将JSON插入到您选择的任何数据库中。

  • "加载"端点的工作方式与"保存"端点类似,但相反。用户要求提供特定的草图。草图的标识(id、名称等)将与其授权令牌一起发送。Node.js服务器上的"加载"端点验证其授权令牌,然后在数据库中查询草图。

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

希望这能让你知道下一步该去哪里。


根据评论编辑:

我四处寻找Node.js+PostgreSQL指南,但没有找到任何我觉得合适的推荐。不过,我确实找到了这个JS库,我会去看看:

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

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

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