2016-05-17 12 views
1

私はnodejsとpg-promiseを実行しています。複数のUPDATEを囲むBEGINとCOMMITでトランザクションを作成するためにバッチ関数を使用したいと考えています。pg-promiseのパラメータリストで.batchを使用する

これは私のコードです:

db.tx(function (t) { 
    return this.batch(function() { 
     for (var i = 0; i < cars.length; i++) { 
      return db.any('UPDATE ... ', [car_id, cars[i].votes]); 
     } 
    }); 
}) 

しかし、それは何も起こらないと動作していないようです。私のような入力のための私のバッチリストを作成することは可能ですか?

+0

例は公式の文書[Transactions](https://github.com/vitaly-t/pg-promise/wiki/Learn-by-Example#transactions)から始まっています。 –

答えて

1

メソッドbatchは、パラメータとして機能しません。解決するための約束事が必要です。

また、公式ドキュメント(Transactions)から始めて(StackOverflowでも)、それを使用する方法の例がたくさんあります。同じタイプの

db.tx(t => { 
    const queries = cars.map(c => { 
     return t.none('UPDATE ... ', [c.car_id, c.votes]); 
    }); 
    return t.batch(queries); 
}) 
    .then(data => { 
     // success 
    }) 
    .catch(error => { 
     // error 
    }); 

エクストラ

複数の更新をとして実行することができます:あなたは、単にbatchを使用してそれらを実行して更新クエリの配列を作成してしまうの更新プログラムのセットについて

より良いパフォーマンスのために、単一のクエリを使用します。 Performance Boostおよび方法helpers.updateを参照してください。

+1

申し訳ありませんが、正しい方法で苦労しました。ありがとうございました。 –

+0

@MichaelNielsen私は、あなたがある日になる場合に備えて、複数の更新についての件についてさらに研究を加えました;) –

関連する問題