为啥在使用 PostgreSQL local、ngrok 和 NodeJS 时程序会混合所有连接用户的代码?
Posted
技术标签:
【中文标题】为啥在使用 PostgreSQL local、ngrok 和 NodeJS 时程序会混合所有连接用户的代码?【英文标题】:Why the program mixes the code of all users connected when working with PostgreSQL local, ngrok and NodeJS?为什么在使用 PostgreSQL local、ngrok 和 NodeJS 时程序会混合所有连接用户的代码? 【发布时间】:2018-01-26 00:03:30 【问题描述】:我的代码存在严重问题。我正在使用 Node.JS 和 ExpressJS 为 Telegram 开发一个机器人。为了提出请求,我使用 ngrok 并存储信息 PostgreSQL。我的问题是:当只有一个用户连接并与机器人对话和处理操作运行程序时,代码运行得很好。但是,当同时连接多个用户时,程序会为所有用户混合代码。示例:
如果第一个用户激活布尔变量以进行特定选择,或者如果机器人正在处理该用户的 SQL 查询并显示结果,则第二个和第三个用户会受到影响......为什么?
我认为可能 PostgreSQL 不允许在本地机器上运行数据库的多个事务,或者可能是代码有问题。
我该如何解决这个问题?
【问题讨论】:
See How do I ask a good question? - 如果你能提出一个清晰、简洁、包含相关代码的问题,你会得到更好的回应。 【参考方案1】:听起来您正在使用可变服务器端。由于您没有提供代码,我将提供一个示例来说明我认为问题所在。
假设您有一个名为basket
的变量,它存储用户购物篮中的所有商品。当用户 A 将某物放入他们的购物篮时,您会更新该变量,但当用户 B 将某物放入他们的篮子时,您会更新相同的变量。
相反,您需要像这样创建一个用户对象:
let users =
"5":
userid: 5,
basket: ['apple', 'banana']
,
"7":
userid: 7,
basket: ['orange', 'apple']
当您向后端发出请求时,您会在请求中传递 ID 和新项目(通常是 POST 正文)并获取正确的用户,如下所示:
let user = users[param.userid]
user.basket.push(item)
然后每个用户将单独更新。
【讨论】:
以上是关于为啥在使用 PostgreSQL local、ngrok 和 NodeJS 时程序会混合所有连接用户的代码?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 ng-click 需要通过 $index 跟踪才能在嵌套的 ng-repeat 内触发
为啥我们在 AngularJS 中使用 ng-style 而不是 style 进行 css 格式化?
为啥即使使用仅索引扫描 PostgresQL 计数也如此缓慢