gpt4 book ai didi

javascript - 按顺序执行多个数据库查询( promise )

转载 作者:行者123 更新时间:2023-12-03 09:36:15 24 4
gpt4 key购买 nike

数据库查询本身不是问题 - 它们工作正常。

问题是,我需要按顺序执行所有这些:

DELETE FROM myTable;
INSERT INTO myTable(c1, c2, c3) VALUES (x, y, z);
SELECT * FROM myTable;

而且无论我尝试什么,我都不知道如何在 Node 中做到这一点。 This question似乎是流量最大的解决方案,它会让我做这样的事情(其中 clientfrom pg 并且应该返回 promise ):

// client is my database client, has already been initialized
// f is an object corresponding to my database
var res;
Promise.resolve()
.then(() => {
console.log("Deleting");
return client.query("DELETE FROM FileFormat");
})
.then(() => {
console.log("Inserting");
return client.query("INSERT INTO myTable(c1, c2, c3) VALUES ($1, $2, $3)", [f.x, f.y, f.z]);
})
.then(() => {
console.log("Selecting");
return client.query("SELECT * FROM FileFormat").then((err, result) => res = result.rows)
})
.then(() => {
console.log("Finished");
console.log(res);
})

我希望它打印Deleting,然后是Inserting,然后是Selecting,然后是Finished,然后是我刚刚插入数据库的数据。

相反,它打印Deleting 然后什么都不做。

我不想无限地链接 client.query.then(client.query.then(...)),因为这会使我的代码变得任意缩进。我宁愿让我的代码尽可能平坦,并按顺序执行这些调用,等待每个调用完成后再开始下一个调用。我该怎么做?

最佳答案

根据我对原问题的评论回答

客户端可能实际上并没有解决会导致此行为的 promise 。如果删除所有 client.query,您将看到所有日志都将按照您的预期显示。您的 Javascript 代码已经在执行您想要的操作,问题似乎出在 PG 客户端上。

关于javascript - 按顺序执行多个数据库查询( promise ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60512625/

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