問題タブ [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.
javascript - pg-promise 選択クエリのカスタム フィルターを作成する
私が取り組んでいる関数は、7 つの異なるキー値を持つ入力オブジェクトを取得することであり、それぞれが未定義であるかどうかにかかわらず可能性があります。入力に存在するキー値に基づいてデータベースをフィルタリングしたいと考えています。たとえば、input.userID
存在する場合のみ、次のクエリを実行します。
それ以外の場合、input.userID と input.startTime の両方が存在する場合は、次のようにします。
私が行ったことは、次のような params と keys オブジェクトを作成したことです。
addFilterToTheQuery
私が自分で実装した単純な機能です。私は基本的にifケースを7つ作ります。次に、これらのキーとパラメーター値を使用して、別の巨大なスイッチ ケース コードが必要になる可能性がある方法でクエリ関数に渡す必要があります。
これがこれを行う唯一の方法ですか?このコードの冗長性を取り除くより良い方法はありますか?
node.js - アプリ起動時にpg-promiseでデータベース接続を確認する
pg-promiseモジュールを使用して postgres データベースに接続する高速アプリケーションを構築しています。
アプリケーション サーバーを起動するときに、データベース接続が成功することを確認したいと思います。つまり、データベースへの接続に失敗した場合は、エラーをスローしたいと考えています。
私のserver.jsファイルは次のとおりです。
現在の構成では、データベース接続が有効かどうかに関係なくExpress サーバーが起動しますが、これは私が望む動作ではありません。
ドキュメントを参照してみましたが、解決策が見つかりませんでした。私も試しました
しかしpgp
、約束を返さないため、うまくいきませんでした。
node.js - pg-promise で複数のレコードを挿入する
複数のレコードを挿入する必要があるシナリオがあります。ID(他のテーブルからのfk)、キー(char)、値(char)のようなテーブル構造があります。保存する必要がある入力は、上記のデータの配列です。例: 次のような配列オブジェクトがいくつかあります。
MS SQL では、TVP を作成して渡します。postgres で達成する方法がわかりません。だから今私がやりたいのは、pg-promise ライブラリを使用して、postgres sql の単一のクエリでリストからすべての項目を保存することです。ドキュメントを見つけることができません/ドキュメントから理解できません。どんな助けでも感謝します。ありがとう。
node.js - pg-promise を使用して多対多の関係を照会する最良の方法
たとえば、ユーザー情報、電子メール、およびそのロールを db から取得し、次のようなオブジェクトを作成したいとします。
照会する必要がある 3 つのテーブルがあります。
Users
テーブルにはid
、firstname
、がありlastname
ます。Emails
テーブルにはtype
、email
、がありuser_id
ます。Roles
テーブルにはrole
、title
、がありuser_id
ます。
pg-promiseの wiki に基づいて、タスクを使用して実行する必要があるとほぼ確信していますが、それらをどのようにチェーンするかはわかりません。
UPDATE私の実際のプロジェクトでは、製品を挿入し、生成されたIDを使用して属性を挿入する必要がありました。同様の状況が発生した場合に備えて、ここに私のコードを追加します。
pg-promise - pg-promise に serial 型の ID を挿入
pg-promiseでは、主キーがシリアル型の場合、どのようにデータを挿入できますか? フィールド ID を省略すると、呼び出しで応答が作成されません。
以下のコードは、catch でエラーを生成しません (また、thenブランチも実行しません)。
テーブル:
手動で ID を指定しても問題ありません。
もちろん、SQL は PGAdmin で正常に実行されます。
javascript - パラメータの配列に整数の配列を渡す
pg-promise docsで推奨されているように、pg-promise のパラメーターの配列にパラメーターの配列を渡そうとしています。
しかし、それは機能しません。「引数リストの後に ) がありません」というエラーが返されます。または、パラメーターを次のように置き換えると、「演算子が存在しません: 整数 = 整数 []]」エラーが発生します。
もちろん、このように渡すと動作します:
他のパラメータが関係している場合、値の配列を渡す適切な方法ですか?
また、$2 を囲む括弧を削除しようとしましたが、成功しませんでした。
javascript - Pg-promise のパフォーマンス向上: ON CONFLICT
ここでpg-promise ライブラリの作成者が推奨するパフォーマンス パターンに従おうとしています。
基本的に、Vitaly はインサートを使用することを推奨しています。
次のヘルパー関数を使用します。
私の質問は、インサートに制約がある場合、どうしますか? 私のコード:
明らかに、非同期ループから外れているため、パラメーターにアクセスできません。
私もこのようなことをしようとしました:
しかしもちろん、postgresql の標準を尊重しません。
これを達成する方法はありますか?
ありがとう !