問題タブ [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.
javascript - knex.jsのcreateTable(...).createTable(...)とcreateTable(...).then(...)の違いは何ですか?
knex.js を使用して MySQL データベースに接続しています。いくつかのテーブルを作成したい。これまで、私は 2 つのスタイルを見てきました。createTable
そのうちの1つは、そのような使用を連鎖させます。
他のスタイルは、then
メカニズムを使用して同じことを行います。
それらは意味的に似ていますか?彼らが同じことをしていると仮定できますか?最初の節が完全に終了したら、両方とも 2 番目の節を実行しますか?
node.js - 接続、データベースの作成、そのデータベースへの再接続、knex.js でのテーブルの作成方法は?
私はknex.jsを使用しています。なんか変な設定してますね。接続している MySQL データベースにデータベースが既にセットアップされているかどうかわかりません。
そのため、最初にデータベースを指定せずに接続します。次に、データベースを作成し、その指定したデータベースに再接続します。その後、3 つの異なるテーブルを作成したいと考えています。しかし、私はError: ER_BAD_DB_ERROR: Unknown database '<dbname>'
. 私はこのコードを持っています、
再接続が確立され、データベースが作成された後にテーブル作成コマンドを実行するには、何を変更する必要がありますか?
javascript - 選択からの Knex.js 挿入
Knex.js を介して次のようなクエリを生成しようとしています。
基本的に、特定の値がまだ存在しない場合にのみ値を挿入したいと考えています。しかし、Knex.js はこれを行う方法を認識していないようです。(値なしで)呼び出すとknex.insert()
、「デフォルト値を挿入」クエリが生成されます。
私は次のことを試しました:
しかし、それでもデフォルト値が得られます。それを尊重する.columns(Object.keys(data))
ことを期待してa を追加しようとしましたが、うまくいきませんでした。insert()
必要なクエリを knex で生成することは可能ですか? または、Knex.js メソッドを使用せずに生のクエリを作成するだけでよいでしょうか?
javascript - JoinのBookshelfjs where句
私はbookshelfJSを使い始めたばかりで、次のことを行う方法について明確な答えを見つけることができませんでした.
次のテーブルがあるとします。
コレクションには多くの製品が含まれる場合があります。
私は次のことをしたい
コレクション ID を渡し、product_accounts の全リストを返し、そこから製品を取得するにはどうすればよいでしょうか?
参考までに、product_account_id でクエリを実行している場合は、これを行っています。
javascript - 単一のファイルをシードのみに指定するにはどうすればよいですか
私はシードに knex を使用しており、すべてのシード ファイルがある development というフォルダーがあります。
私が望むのは、単一ファイルをシードする方法です。
私が使用しているコマンドは次のとおりです: knex seed:run --env=development しかし、このコマンドはすべてのファイルをシードするためのもので、db で重複した行を取得します。
昨日シード ファイルを作成し、それらをシードしたとします。今日は、昨日のファイルではなく、このファイルのみをシードする別のシード ファイルを追加したいとします。
Laravel の例: php artisan db:seed --class=ProductTableSeeder
ありがとう
javascript - knex.js / bookshelf.js - 列をマルチプレイするには?
基になる knex.js 構文を使用して、bookshelf.js の 2 つの列を乗算しようとしています。
これが私がやりたい純粋なSQLです(少なくともそのselect
部分):
これが私のクエリです:
コードでコメントされているように、実際にこれを行いたいと思います:qb.sum('products.price * orders_products.quantity as sum');
という名前の列がないというエラーが表示されるため、これはもちろん機能しませんproducts.price * orders_products.quantity
。
何か案は?
sql - 重複するグループをすべて検索します。ここで、重複は同じメンバーを含むグループを意味します
重複するグループをすべて検索するには、SQL クエリが必要です。重複とは、同じメンバーを持つグループを意味します。したがって、形式的に問題を書くことができます: channel_ids のすべてのセットを返します。m 個のチャネルを含む特定のセットでは、チャネル i から m までが同じメンバーを含んでいます。group_id、user_id、users テーブル、groups テーブルを持つ結合テーブル groups_members があります。助けてくれてありがとう。
javascript - Node API の混乱に関する knex.js での挿入ステートメントの記述
私は本当に頭を包み込むように見えない問題を抱えています。これは Knex.JS 実装に非常に固有のものであり、PostgreSQL とは何の関係もないと確信しています。
次の実装は機能します。適度な量 (~500 ステートメント) を挿入する場合。量が多い場合、これは他の理由で失敗します。とにかく、次のユースケースでは機能しません。次のセクションのようなものが必要です。
ただし、次の場合はそうではありません。
うまくいかないのはこれです:
- 一貫性のない量の行が挿入されます。一部の実装では、私が持っているアイテムよりもはるかに多い (?!)
- 一意の制約があるため、この実装では多くの重複キー エラーが発生します。
追加情報:
- セットに重複するキーが含まれていません
- バックエンドとして PostgreSQL を使用しています
問題は、ほとんどの場合、目的の動作を実装する方法です。理想的な状況は、たとえば 500 個の「アイテム」のチャンクを扱います。私はすでにプロジェクトに関する質問を投稿しました ( https://github.com/tgriesser/knex/issues/826 ) が、Knex.JS コミュニティの何人かの人々がここ SO でもっと活発になることを願っています。
knex.js - 接続文字列を使用するときに knex 接続 ssl オプションを設定する方法
接続文字列を使用して knex を初期化するときに、接続の ssl プロパティを true に設定するにはどうすればよいですか? 同様に、デバッグを true に設定する方法は? 通常は接続オブジェクトを渡しますが、この場合は環境変数からの接続文字列を使用する必要があります。
javascript - Bookshelf js fetch withRelated オプションが空のリレーション オブジェクトを返す
イメージモデルとロケーションモデルがあります。イメージ モデルには、場所への外部キーが含まれています。私が使用する結果を取得するには:
そして、私は次の結果を受け取ります:
しかし、私は次のようなものが欲しい:
私の画像モデル:
そして私のロケーションモデル:
空のロケーション オブジェクトを受け取るのはなぜですか?