Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

How do you use transactions with a Pool?

オープン
#411 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
25/100
issue の種類
バグ
明瞭さ
説明が足りない
活発さ
停滞
技術スタック
javascript, node.js
領域
backend, databases

調査の方向性

この issue には executeStatements のスニペットしかないため、まずリポジトリ内の getPool()、pool.connect()、トランザクション呼び出しを追跡してください。プールされた接続がどのように解放されるか、また並行クエリがどのように処理されるかを確認してください。3 回の呼び出しで発生する失敗を再現し、確認されたプールまたはトランザクションの動作を文書化または修正できれば完了です。

索引モデルが issue の本文から書いたものです。

説明

Below is a snippet of code I am trying to get working... basically I get the pool and call connect on it to get a single connection.

I call beginTransaction on the connection, run my statements, then call commit or rollback.

The problem with this, is that after 3 calls to this function, the pool stops working and doesn't respond to anything.

Am I doing something wrong here? Should I not be using a pool to do transactions?

export async function executeStatements(statements: Statement[]) {
  const pool = await getPool();

  const connection = await pool.connect();
  await connection.beginTransaction();

  try {
    const results = statements.map((statement) =>
      connection.query(
        statement.sql,
        statement.parameters as Array<number | string>,
      ),
    );
    (await Promise.allSettled(results)).forEach((promise) => {
      if (promise.status === "rejected") {
        throw Error();
      }
    });
    await connection.commit();
  } catch (error) {
    await connection.rollback();
  }

  return;
}
主要言語
JavaScript
スター
159
フォーク
92
平均マージ
5時間 59分
マージ済み PR(30日)
3

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

IBM/node-odbc のほかの issue

IBM/node-odbc の issue をすべて見る

似ている issue

JavaScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。