- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我目前正在开发一个 WebGL 草图绘制项目,用户可以在该项目中在 html Canvas 上绘制任意对象。 JavaScript 库和文件都存储在 Node.js 服务器上,当前每次软件运行时都会在本地启动。基本上,用于保存页面上所有绘制对象的所有功能都已经实现,其中绘图被编写为 JSON 对象,但下一步是将这些对象保存到数据库,在数据库中它们可以映射到用户 ID。我还需要实现一个登录系统,用户可以登录并能够从数据库中选择以前绘制的对象进行编辑。
如果这只是一个普通的网站,我可能只会使用express.js 或类似的东西,但由于 View 基本上完全在WebGL 中呈现,我认为框架不能很好地使用这种构造。
鉴于我目前只需要创建一个登录系统并实现将 JSON 对象持久保存到数据库的功能,是否有任何框架或现有软件可以满足系统的指定需求?
最佳答案
关于身份验证,我建议查看 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 应用程序中请求“保存”时,您会将其草图(及其授权 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,我只会使用他们的官方指南:
关于javascript - 如何将数据库系统添加到WebGL应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36635741/
我创建了一个用户可以添加测试的字段。这一切运行顺利我只希望当用户点击(添加另一个测试)然后上一个(添加另一个测试)删除并且这个显示在新字段中。 所有运行良好的唯一问题是点击(添加另一个字段)之前添加另
String[] option = {"Adlawan", "Angeles", "Arreza", "Benenoso", "Bermas", "Brebant
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我正在努力将 jQuery 滚动功能添加到 nav-tab (Bootstrap 3)。我希望用户能够选择他们想要的选项卡,并在选项卡内容中有一个可以平滑滚动到 anchor 的链接。这是我的代码,可
我正在尝试在用户登录后再添加 2 个 ui 选项卡。首先,我尝试做一个之后。 $('#slideshow').tabs('remove', '4'); $("#slideshow ul li:last
我有一个包含选择元素的表单,我想通过选择添加和删除其中一些元素。这是html代码(这里也有jsfiddle http://jsfiddle.net/txhajy2w/):
正在写这个: view.backgroundColor = UIColor.white.withAlphaComponent(0.9) 等同于: view.backgroundColor = UICo
好的,如果其中有任何信息,我想将这些列添加到一起。所以说我有 账户 1 2 3 . 有 4 个帐户空间,但只有 3 个帐户。我如何创建 java 脚本来添加它。 最佳答案 Live Example H
我想知道是否有一种有效的预制算法来确定一组数字的和/差是否可以等于不同的数字。示例: 5、8、10、2,使用 + 或 - 等于 9。5 - 8 = -3 + 10 = 7 + 2 = 9 如果有一个预
我似乎有一个卡住的 git repo。它卡在所有基本的添加、提交命令上,git push 返回所有内容为最新的。 从其他帖子我已经完成了 git gc 和 git fsck/ 我认为基本的调试步骤是
我的 Oracle SQL 查询如下- Q1- select hca.account_number, hca.attribute3, SUM(rcl.extended_amou
我正在阅读 http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingG
我正在尝试添加一个“加载更多”按钮并限制下面的结果,这样投资组合页面中就不会同时加载 1000 个内容,如下所示:http://typesetdesign.com/portfolio/ 我对 PHP
我遇到这个问题,我添加了 8 个文本框,它工作正常,但是当我添加更多文本框(如 16 个文本框)时,它不会添加最后一个文本框。有人遇到过这个问题吗?提前致谢。 Live Link: JAVASCRIP
add/remove clone first row default not delete 添加/删除克隆第一行默认不删除&并获取正确的SrNo(例如:添加3行并在看到问题后删除SrNo.2)
我编码this ,但删除按钮不起作用。我在控制台中没有任何错误.. var counter = 0; var dataList = document.getElementById('materi
我有一个类似数组的对象: [1:数组[10]、2:数组[2]、3:数组[2]、4:数组[2]、5:数组[3]、6:数组[1]] 我正在尝试删除前两个元素,执行一些操作,然后将它们再次插入到同一位置。
使用的 Delphi 版本:2007 你好, 我有一个 Tecord 数组 TInfo = Record Name : String; Price : Integer; end; var Info
我使用了基本的 gridster 代码,然后我声明了通过按钮添加和删除小部件的函数它工作正常但是当我将调整大小功能添加到上面的代码中时,它都不起作用(我的意思是调整大小,添加和删除小部件) 我的js代
title 323 323 323 title 323 323 323 title 323 323 323 JS $(document).keydown(function(e){
我是一名优秀的程序员,十分优秀!