問題タブ [knex.js]

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 投票する
2 に答える
4688 参照

node.js - クエリの KnexJS ループ

私は Node、KnexJS、および promises に非常に慣れていません。アイテムをクエリしてから、それらに関連付けられた画像を追加する単純なループを構築しようとしています。

私はこの答えを見て、いくつかのことを教えていますが、私の場合にはうまくいかないと思います: Knex Transaction with Promises

これまでのところ、私はこれを持っています:

これは明らかに間違っていますが、これらの場合のアプローチがわかりません。

0 投票する
3 に答える
2099 参照

node.js - Elastic Beanstalk で knex マイグレーションを実行する

node.js プロジェクトを Elastic Beanstalk に配置したところ、適切に構成されました。

これで、アプリケーションが knex プラグインを介して RDS postgres DB に接続されました。

ローカルで knex 移行を実行してローカル データベースを更新するには、コンソール "knex migrate:latest" でこれを実行するだけですが、プロジェクト フォルダー内からコマンドを実行できないため (少なくともできないと思います)。

Elastic Beanstalk アプリで knex コマンドを実行するにはどうすればよいですか?

心に留めておいてください、私は弾力性のある豆の木にかなり緑色です。

0 投票する
0 に答える
910 参照

javascript - bookshelfjs (knex) で ON DUPLICATE KEY UPDATE を使用してトランザクションに多対多の関係を挿入する場合のベスト プラクティス

よし、私は「見たい」リストを作成できる個人的なプロジェクトに取り組んでいる。ユーザーは公開 API (TheMovieDB) を使用して良いと聞いた映画を検索し、ウォッチリストに追加できます。映画が追加されるたびに、データをデータベースに保存します。次の表を使用します(質問に関係のない列を除く):

ユーザー

  • ID

映画

  • ID(PK)
  • tmdbID (固有)

movie_users

  • ID(PK)
  • movie_ID (映画テーブルの ID を参照する FK)
  • user_ID (FK は users テーブルの ID を参照します)

ジャンル

  • ID(PK)
  • 名前 (固有)

ジャンル_映画

  • ID(PK)
  • ジャンル_ID (FK はジャンル テーブルの ID を参照)
  • movie_ID (映画テーブルの ID を参照する FK)

ON DUPLICATE KEY UPDATE 機能が必要だったため、MariaDB を使用しました。このデータベースには元のデータがないためです。たとえば、誰かが映画をデータベースに追加したいが、データベースにこの映画が既にある場合などです。 、movies_users テーブルに新しい行を追加したいだけです。同時に、ジャンルに関してはその機能も使用しています。

言語に関しては、私は NodeJS を BookshelfJS と共に使用しています。

現在、私は SQL の専門家ではないので、自分の作業方法が最適かどうかはわかりません。さらに、私は Promises に精通していません。これは、映画をデータベースに追加するときに使用するコードです: http://codeshare.io/BPWDV .

最も安全な方法だと思うので、トランザクションを使用しますか? ON DUPLICATE KEY UPDATE を使用できるように、knex.raw ( http://knexjs.org/#Raw-Queries ) も使用する必要がありました。基本的に、これは何が起こっているのかです:

  1. 既存の行に応じて、movies テーブルに映画を INSERT しようとしています
  2. 映画が既にテーブルにある場合は、映画の ID を探して、movies_users テーブルで使用できるようにします。挿入された行の ID が返されるため、映画が最初にそこになかった場合、ID を探す必要はありません。
  3. movie_users テーブルに行を挿入します
  4. 映画のさまざまなジャンルをマッピングします。映画で行ったのと同じようにすべてのジャンルについて試してみましたが、重複の可能性に応じて、挿入するか、何もしません。挿入されない場合は、既にテーブルにあるジャンルの ID を探します。
  5. 次に、ジャンルの ID と映画の ID を使用して、genles_movies テーブルに行を挿入します。

個人的には、これはそのようなことを達成するための恐ろしい方法のように見えるので、間違ったことをしているに違いないと感じています. 約束の連鎖全体も見た目も感じもぎこちない。それは機能しますが、もっと良い方法があると思いますか?

私はactorsテーブルとactors_moviesテーブルも使用することを計画していますが、そこにどのように収まるかはわかりません(Promise.map全体で)。

最終的に、私の質問は次のとおりです。コードが正しい場合、コードをクリーンアップするにはどうすればよいですか、またはコードがまったく最適でない場合、私がやろうとしていることを達成するためのより良い方法は何ですか?

0 投票する
0 に答える
500 参照

knex.js - knex.js と pgbouncer

pgbouncer の実装を検討しています。ノードアプリでknex.jsを使用していますが、接続プールに組み込まれていることを無効にする方法はありません。これを処理するための最良のオプションは何ですか?

0 投票する
2 に答える
4931 参照

postgresql - knexを使用してブロブを挿入するには?

現在、ng-file-upload を使用して別のサーバーにアップロードするシステムがありますが、これは CORS のおかげでうまく機能しています。

データベースを管理するために knex (移行とシード) を使用し、bytea 列を持つ特定のテーブルを用意しています。

PostgreSQL データベース。

アップロードを可能にするために、busboy モジュールを追加して Express がマルチパート リクエストを管理できるようにしました。ファイルは問題なくディスクに保存されています。

しかし、私が本当に望んでいるのは、それを表の bytea 列に保存することであり、今のところ、そのようなクエストには運がありません。

ガイダンスとより良いドキュメントを歓迎します。

0 投票する
0 に答える
2522 参照

postgresql - 文字列を列挙型に変更

以下の方法を使用して、列の型を文字列から列挙型に変更しています。これを行う別の方法はありますか?

そのようなクエリを形成するために knex.raw として使用することは可能ですか?