問題タブ [bookshelf.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 - bookshelf.js のタイムスタンプが機能しない
現在、bookshelf.js を試していて、次の knex 移行を使用してサンプル テーブルを作成しました。
次に、bookshelf.js モデルを定義しました。
そしてそれを保存しようとしました:
すべてが機能しているようで、データベースを見ると、新しいユーザーは実際に保存されていますが、タイムスタンプ列はNULL
. また、呼び出すu.timestamp()
前に呼び出しu.save()
ても効果がないようです。
ここで何が間違っていますか?
node.js - bookshelf.js でカテゴリ別に投稿を取得する
ノードの ORM として bookshelf.js を使用しています。私は2つのモデルを持っています
それらは、categories_posts テーブルを介して関連付けられているため、多対多の関係です。
今、ユーザーが特定のカテゴリのすべての投稿を表示できるようにしたいと考えています。しかし、すべての投稿だけではなく、ページネーションが必要です。しかし、特定のカテゴリの投稿の総数を取得することはできません。システムに存在する投稿の総数が常に返されます。
私はこれを試しましたが、合計は、によって識別されるカテゴリの下の合計投稿ではなく、テーブルCategory.forge({id: id}).posts().query().count('*').then(function(total) {});
内の合計投稿に等しくなります。これは可能ですか、またはテーブルを直接クエリするヘルパー メソッドを作成する必要がありますか?posts
id
categories_posts
ありがとう。
mysql - bookshelfjs ノード関係
と の両方のモデルがUser
ありUserRole
ます。現在、2 つの役割があり、これら 2 つの役割にまたがる多くのユーザーがいます。userのフェッチでロールデータにアクセスする方法が見つかりません。
私が見ているエラーは次のとおりError: ER_BAD_FIELD_ERROR: Unknown column 'user_roles.user_id' in 'where clause'
です。
.
knex の移行は次のようになります。
何か案は?
node.js - Bookshelf モデルでの Knex クエリを制限して、n レコードのみを返すようにします
次のコードでは、splice 関数を使用して最初の 10 個の /JSON オブジェクトのみを JADE テンプレートに渡しています。
配列をスプライシングしてそれを行うのではなく、最初の 10 レコードのみを返すようにクエリ自体を制限する方法はありますか (offset および limit パラメータを使用)。
error-handling - 本棚でチェックして、エラーをキャッチしてDBの実行を停止する方法は?
bookshelf で checkit を使用しようとしていますが、checkit ルールを追加して意図的に違反した後、promise#catch ブロックがエラーを適切にキャッチしていないようです。(ここでのキャッチの使用を完全に誤解している可能性もあります)
空のユーザー オブジェクトを作成すると、次の未処理のエラー スタック トレースが表示され、DB クエリが構築されていることもわかります (本棚プロジェクトと「保存」イベントにフックするとどうなるかについては別の問題である可能性があります)。
これについて 2 つの質問があります。
debug: true
knex 構成でオンにしているため、スタックトレースと の間のブロックは準備された SQL ステートメントのようER_NO_DEFAULT_FOR_FIELD
です。モデル レベルで検証エラーをキャッチするために Checkit を導入したのに、SQL がまだ実行されているのはなぜですか?- #catch ブロックを正しい方法で使用していますか? もしそうなら、なぜ私は未処理のエラースタックトレースを取得するのですか? (
e.message
#catch 関数の結果は、実際には Checkit からではなく MySQL から来ているように見えます) そうでない場合、ここでエラーをより適切に処理する正しい方法は何ですか?
これまでの主な情報源は、bookshelf.js ドキュメント ( http://bookshelfjs.org/ ) と Checkit リポジトリ ( https://github.com/tgriesser/checkit )です。
mysql - Node.jsのbookshelfjsで2つのテーブルを結合する方法
MySQl DB に次の 2 つのテーブルがあります。
お客様:
- cust_ID (PK)
- cust_name
- trans_ID (外部キー)
取引
- トランス ID (PK)
- 取引金額
Node.js で、これらのテーブルの両方に対して 2 つのモデルを作成しました。今、trans_id に基づいて、これらの両方のテーブルで内部結合を実行したいと考えています。どうすればいいのかアイデアがわかりません。