問題タブ [pg-promise]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
12294 参照

postgresql - パラメータ化されたクエリのクエリ形式

PostgreSQL で like 句を使用pg-promiseして選択クエリを実行するために使用しています。残念ながら、クエリはエラー コード as08P01とエラー メッセージで失敗しています

bind メッセージは 1 つのパラメーターを提供しますが、準備済みステートメント "" には 0 が必要です

クエリは次のとおりです

パラメータ化されたクエリを次のように使用しています

クエリの実行に使用される API は次のとおりです。

私は pg-promise の例を見ましたが、パラメーター化されたクエリで LIKE 句を使用していません。

環境の詳細は

pg-約束: 4.3.2

PostgreSQL: 9.6

ノード: 5.7.1

更新: 1query API (プレーン テキスト SQL) を使用してクエリを実行できますが、 each. APIのeach使用中にLIKE句が失敗する理由を誰か説明してください。Parameterized

0 投票する
1 に答える
564 参照

javascript - pg-promise による条件付きタスク

私は単にテーブルから値を読み取ろうとしており、追加のクエリの戻り値呼び出しに基づいて、結合された結果を返します。

簡単な例を見てみましょう: table Usershasidで、nameがnull でないemailid 場合emailid、 email テーブルを呼び出して のような結果を返したいとします{ id:[id], name:[name], email:[email]}

0 投票する
1 に答える
1720 参照

node.js - pg-promise で返す

pg-promiseNode.js のモジュールを使用して、すべてのクエリを含む別のファイルを作成しました。ほとんどの場合req, res、クエリの後に使用するだけですが、値を返したい場合があります。それは動作しません。返しますundefined

0 投票する
1 に答える
4368 参照

node.js - Postgresql キャッチ トランザクション エラーとロールバック

pg-promiseを使用して SQL クエリを実行しています。クエリ自体は、外部の .sql ファイルに保存されます。

トランザクションを実行すると、Postgres はエラーが発生すると (予想どおり) トランザクションを中止します。私が実行している問題は、トランザクションが中止された後に実行しようとした別のクエリが実行されず、代わりに次のメッセージが表示されることです: 「現在のトランザクションは中止され、コマンドはトランザクションブロックの終わりまで無視されました」 . クエリが psql コンソールで実行されていた場合、失敗したクエリの後に ROLLBACK を発行することで、この問題を解決できました。アプリケーションで使用される SQL は外部ファイルにあるため、ここではオプションではないと思います。また、何かが失敗した場合はトランザクション全体を破棄する必要があるため、セーブポイントはオプションではないと思います。

このエラーが発生した場合、SQL ファイルをどのようにロールバックしますか?

参照用の SQL は次のとおりです。

前もって感謝します!

0 投票する
1 に答える
1642 参照

node.js - pg-promise を使用すると AWS Lambda の実行時間が長くなる理由

AWS Lambda を使用して、SQL クエリを実行して RDS postgres データベースからレコードを取得し、結果に基づいて SQS メッセージ ベースを作成するという非常に単純なタスクを実行し始めました。

aws-sdkデフォルトでは、Amazon はモジュール (ノード 4.3 エンジンを使用) のみを提供しており、この SQL クエリを実行する必要があるため、を含むカスタム展開パッケージを作成する必要がありますpg-promise。私が使用しているコードは次のとおりです。

ラムダ関数をテストするとき、WatchLogs を見ると、関数自体の実行には約 500 ミリ秒かかりましたが、実際には 30502.48 ミリ秒かかったことが示されています (スクリーンショットを参照)。

ここに画像の説明を入力 ここに画像の説明を入力

318KB のパッケージを解凍して実行を開始するのに 30 秒かかると思いますか? それは私にとって単なる冗談ですか、それとも何か足りないのですか? zip をアップロードし、パッケージを S3 にアップロードして高速かどうかを確認しようとしましたが、それでもレイテンシーは同じです。

Python バージョンは、カスタム パッケージなしでネイティブに SQL リクエストを実行できることに気付きました...

私たちのアプリケーションはすべて node で書かれているので、そこから離れたくはありませんが、なぜ Amazon がデータベースの相互作用のための基本的な npm モジュールを提供していないのか理解するのに苦労しています.

コメントやヘルプは大歓迎です。この時点で、毎分トリガーされるスクリプトを実行するのに 30 秒かかる場合、Lambda が私たちにとって有益であるかどうかはわかりません...

同じ問題に直面している人はいますか?


更新:これは、接続が不要になったらすぐに接続を閉じる必要がある方法です(Vitalyの助けに感謝します):

0 投票する
1 に答える
4228 参照

node.js - pg-promise を使用した同期プログラミング

私は node.js と pg-promise が初めてで、同期プログラミングのバックグラウンドから来ており、新しい考え方が必要です。

メイン プログラム ロジックの前にデータベースの初期化を実行するシナリオから始めます。

次の例: https://github.com/vitaly-t/pg-promise/wiki/Learn-by-Example#simple-select

私のコードは次のようになりますか:

または、次のように読みます。

私の理解では、後者の場合、レコードが削除される前にメッセージが表示されます。

更新: Promise とコールバックに関する多数の記事を読んだ後、pg-promise は成功とエラーの両方のシナリオで .then と .catch のチェーンを使用することを理解しました。また、pg-promise コマンドは、次のような関数ラッパー内に配置する必要があることも理解していると思います。

次に、コード内から、関数を非同期で実行する単純なコマンドで関数を呼び出します。

ただし、プログラムのほとんどすべてが最初に初期化を完了する必要があるため、この非同期コーディングとプロミスの概念がプログラムの全体的な構造にどのように適合するかはまだわかりません。したがって、プログラム全体を関数の「.then」セクションに配置する必要はありませんか? つまり、最上位の唯一のコードは事実上 intialiseDB() 関数でしょうか?