gpt4 book ai didi

javascript - 客户端Javascript调用Postgresql存储过程

转载 作者:行者123 更新时间:2023-11-29 12:22:39 24 4
gpt4 key购买 nike

我有一个以 Postgresql 作为数据库的桌面应用程序。业务逻辑主要在存储过程中。因此,存储过程充当桌面应用程序的 API。

现在我想创建一个基于 Web 的应用程序子集版本,以便用户能够在移动设备上运行它。但是客户端javascript不能直接访问数据库所以我必须开发一个HTTP web服务。因为这是一个 LAN 应用程序,所以我认为开发一个最多供 5 个用户使用的“普通”Web API 是一种矫枉过正的做法。因此,我正在考虑创建一个 Web 服务,该服务仅解析通过 HTTP 从 javascript 发送的存储过程字符串,并返回格式为 JSON 的表。

它是这样工作的:网络浏览器 + Javascript --> 网络服务 --> 数据库 + 存储过程

客户端 javascript 将以这种格式传递给网络服务字符串:

storproc_name; dbtype1, arg1; dbtype2, arg2; dbtype3, arg3; ... and so on

网络服务将字符串解析为:

storproc_name(arg1, arg2, arg3, ...)

并返回一个 json 消息:

{
{
{ column_name: value}
{ column_name: value}
{ ... }
}
{
...
}
}

例子:

fn_login; varchar(32), admin; varchar(50), password;

由网络服务解析为:

fn_login('admin', 'password') 

并返回:

{
{
{ code: 1 }
{ session_token: 'theusertokenusedtoaccessotherstoredprocedures' }
}
}

然后用户可以使用 session token 执行其他操作

fn_list_products_by_category_id; varchar(50), theusertokenusedtoaccessotherstoredprocedures; integer, 2;

fn_list_products_by_category_id('theusertokenusedtoaccessotherstoredprocedures', 2)

{
{
{ product_id: 101 }
{ product_name: "book" }
}
{
...
}
}

我知道这是一种非标准做法。我看不出这种方法有任何明显的缺陷。但我们将不胜感激任何意见。

最佳答案

看看https://github.com/brianc/node-postgres.git

--编辑--

它是服务器端,但您真的不希望在客户端上使用您的连接凭据,即使它是一个 LAN 应用程序。使用像 node-Postgres 这样的东西(还有很多其他的东西可以看)你的客户端只需要向你的数据库服务器发出 http 请求。这将为您省去“解析存储过程字符串”和手动尝试设置所有内容的麻烦。几个月前我在玩类似的东西,并合作进行了概念验证:https://github.com/OrlandoPg/listen-notify .它不完全是您想要做的,但以它为起点您可以非常快速地实现您的目标。

1) 在您的数据库服务器或连接到您的数据库的连接池上安装节点和依赖项2) 设置你的节点服务来代理你所有的 SP 调用。3) 客户端查询及处理结果。

Node 和 socket.io 会为您处理所有管道,包括身份验证(如果您需要)。在你的情况下,而不是像我那样发出一个单一的监听查询,你可以基于事件名称来执行你的存储过程。我认为与在客户端中执行所有操作相比,这样的方法可以简化客户端代码,并且安全风险更小。

关于javascript - 客户端Javascript调用Postgresql存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8060495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com