Node.js pg PROMITE:在事务中的下一个查询中使用一个查询的结果

Node.js pg PROMITE:在事务中的下一个查询中使用一个查询的结果,node.js,postgresql,transactions,pg-promise,Node.js,Postgresql,Transactions,Pg Promise,我是node.js,为postgres编写了pg promise,试图以2个插入顺序完成一个事务。第一次插入的结果id应在事务的下一次插入中使用 如果任何查询失败,请回滚。 嵌套第二个db.none在内部。然后()第一个db.one将不会回滚第一个查询。所以在这里使用事务 我一直在使用第二个查询中第一个查询的结果。 这是我现在拥有的 db.tx(function (t) { return t.sequence([ // generated using pgp.helper

我是node.js,为postgres编写了pg promise,试图以2个插入顺序完成一个事务。第一次插入的结果id应在事务的下一次插入中使用

如果任何查询失败,请回滚。 嵌套第二个
db.none
内部。然后()
第一个
db.one
将不会回滚第一个查询。所以在这里使用事务

我一直在使用第二个查询中第一个查询的结果。 这是我现在拥有的

db.tx(function (t) {
    return t.sequence([
        // generated using pgp.helpers.insert for singleData query
        t.one("INSERT INTO table(a, b) VALUES('a', 'b') RETURNING id"),
        t.none("INSERT INTO another_table(id, a_id) VALUES(1, <above_id>), (2, <above_id>)")
    ]);
})...
db.tx(功能(t){
返回t序列([
//使用pgp.helpers.insert为singleData查询生成
t、 一个(“插入表(a,b)中的值('a','b')返回id”),
t、 无(“插入另一个_表(id,a_id)值(1,),(2,)”)
]);
})...
第二个查询是使用pgp.helpers.insert生成的,用于多数据查询。但是如果想要使用上一个查询的结果,这是不可行的。不是吗

是否有一种方法可以从第一次插入中获取
id
,即

方法可以运行无限序列,这与您试图实现的目标无关-一个标准/琐碎的事务:

wait db.tx(异步t=>{
const id=wait t t.one('插入表1(a,b)值($1,$2)返回id',[1,2],a=>+a.id);
等待t.none('插入表2(id,a_id)值($1,$2)'[1,id]);
});

应该有一个结果为t.one的对象。它将包含您的id。请等待@vitay-t解释:)如果希望按顺序运行,为什么要使用
batch
?@pozs这是一个错误。t、 顺序就是我的意思。编辑了这个问题。@Maven您想从事务中获取什么数据?好的,标准事务就是解决方法。现在,我可以使用
pgp.helpers.insert
之后的
创建第二个insert查询。然后(id=>{
。不是吗?我会尝试一下。我只是想从以前的事务中获取id并创建多数据插入查询pgp帮助程序。它成功了。谢谢。您将如何使用
async
/
await
?Is
var id=await t t t.one('INSERT…
,然后在第二个查询中使用
id
,相当于一个嵌套事务?@ezorita upvoted!只想说你非常棒,任何事情和几乎所有事情都可以在你的github问题或此处得到回答