node.js - 强制池请求按照它们产生的顺序来解决
问题描述
我有一个运行 PostgreSQL 数据库的 Node.js 服务器。我已将客户端设置为发出编辑数据的请求,等待所述请求解决,然后发送另一个请求以接收应用了新更改的所有数据。
这很好用,但是由于某种原因,它经常失败,我不知道为什么。数据库中的数据确实发生了变化,并且请求了新数据,但由于某种原因,新数据中没有显示新的更改(但是刷新页面会导致它反映新的更改)。我认为这是因为我的请求有时会乱序发送,但事实并非如此。我对正在发生的事情的最佳猜测是数据库落后了,因此我的 Node.js 代码执行得非常快,并告诉客户端它已准备好发送新数据,但是当它要求数据库给它新数据时data 数据库有时没有足够的时间来完成更新其内容,因此它提供的是旧数据......
我用来调用数据库的代码是这样的:
const {Pool} = require("pg");
const pool = new Pool({
user: "postgres",
database: "databasename",
password: "mypassword",
port: 5432
});
pool.connect((err,client,done) => {
client.query("SELECT id, title, description, people, due_date, real_due_date FROM table ORDER BY due_date;",(error,result) => {
if(error){
console.log(error);
resolve("error");
}else{
resolve(JSON.stringify(result.rows));
}
});
done();
});
(这只是演示我使用的结构的一个片段,实际代码的内容并不特定于问题。)
我正在使用同一个池向数据库发出所有请求。我想知道,有没有一种方法可以强制这个池按照接收到的顺序完成请求,这样它只会在完全完成SELECT
后执行查询?UPDATE
如果是这样,您认为这会解决我的问题吗?
解决方案
推荐阅读
- java - GWT 应用程序编译问题 - 错误,状态 503
- python - tweepy 和 google colab 有错误
- java - 调用函数后 JML 删除警告
- python - 使用 EfficientDet D7 1536x1536 的 Tensorflow 对象检测训练在 Colab 上不断出现问题?
- html - 如何使用rowspan和colspan在html中制作表格?
- vlc - 减少来自 smb 共享的 vlc 音频播放的带宽使用
- python - 将 Python 中的文本文件解析为字典
- java - javax.net.ssl.SSLHandshakeException:即使在添加证书之后
- javascript - 从函数中将猫鼬文档作为对象返回
- java - Java/Stream 帮助:将嵌套的地图列表转换为仅使用流的地图