[解決済み] sequelizeを使用したnodeアプリの構成は?
質問
sequelize ORMを使用したnodejsアプリの例を探しています。
私の主な懸念は、モデルが require() 依存ループのために互いに複雑な関係を持っている場合、別々の js ファイルでモデルを定義することは不可能に近いと思われることです。おそらく、人々はすべてのモデルを非常に長い1つのファイルに定義しているのではないでしょうか?
私は主に、モデルがどのように定義され、アプリを通して使用されるかに興味があります。私は、私が自分でやっていることが、物事を行うための良い方法であるといういくつかの検証をしたいのです。
どのように解決するのですか?
ショートストーリー
この場合のトリックは、モデルを初期化しないことです。 で ファイルで初期化するのではなく、初期化のために必要な情報を提供し、中央のモジュールにモデルの設定とインスタンス化の処理を任せることです。
というわけで、手順は以下の通りです。
- フィールド、リレーションシップ、オプションなど、モデルに関するデータを含むいくつかのモデルファイルを用意します。
- これらのファイルをすべてロードし、すべてのモデルクラスとリレーションシップを設定するシングルトンモジュールを用意します。
- app.jsファイルにシングルトンモジュールをセットアップします。
-
シングルトンモジュールからモデルクラスを取得します。
しない
使用
require
を使用せず、代わりにシングルトンからモデルをロードします。
長い話
このソリューションのより詳細な説明と、対応するソースコードです。
http://jeydotc.github.io/blog/2012/10/30/EXPRESS-WITH-SEQUELIZE.html
編集:これは非常に古い答えです!(情報を下に読んでください。(情報を得るために下を読んでください)
古くて、いろいろな意味で限界です!
-
最初の は、@jinglesthula がコメントで述べているように(そして私も経験しました)、これらのファイルを要求することに問題があります。それは
require
と同じようには動作しないからです。readdirSync
! -
第二 - あなたは 非常に 関係で制限されています。このコードでは オプション を提供しないので、あなたは 使用不可 を作成することができます。
belongsToMany
が必要なのでthrough
というプロパティを作成することができます。最も基本的なアソシエイトを作成することができます。 -
第三の - あなたはモデル関係で非常に制限されています! コードをよく読むと、リレーションは オブジェクトです。 の代わりに 配列 というように、もしあなたが を1つ以上 のアソシエーションを作りたい場合(例えば、2回の
belongsTo
のように) - できません! -
第四 - シングルトンは必要ありません。nodejsのすべてのモジュールはそれ自体でシングルトンなので、このすべてが無意味にかなり複雑になっています。
ファームさんの回答を見てみてください (記事へのリンクが切れていますが、sequelizeのこの公式サンプルで直します。 https://github.com/sequelize/express-example/blob/master/models/index.js - をクリックすると、プロジェクト全体を見ることができます。)
p.s. アップボーティングされすぎて、新しい回答が表示されなくなったので、この投稿を編集しています (私がそうだったように)。
編集しています。 ただ、同じ投稿のコピーにリンクを変更しましたが、Githubのページ
関連
-
[解決済み】ENOENT, そのようなファイルまたはディレクトリがありません。
-
[解決済み】Passport.js - エラー: ユーザーのセッションへのシリアライズに失敗しました。
-
[解決済み] Passport JSのreq.isAuthenticated()はどのように実装されていますか?[クローズド]
-
[解決済み] Npmエラー - Windows NT - 解決方法
-
[解決済み] MongoNetworkError: 最初の接続でサーバー [localhost:27017] への接続に失敗 [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017] 。
-
[解決済み] エラーです。Ionic使用中にモジュール '../lib/utils/unsupported.js' が見つかりません。
-
[解決済み] エラー: ノード出力を "|head" にパイプするときに EPIPE を書き込む。
-
[解決済み] sequelize for nodeを使用してレコードを更新するにはどうすればよいですか?
-
[解決済み] NVMを使用して、デフォルトのノードバージョンを設定するにはどうすればよいですか?
-
[解決済み] Nodeでファイルに追記する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Node.js getaddrinfo ENOTFOUND
-
[解決済み】 console.logの出力をどこに永久保存するか?
-
[解決済み】Mongooseで配列の値を更新する方法
-
[解決済み】E11000重複キーエラー mongodb mongooseのインデックス
-
[解決済み] create-react-app、インストールエラー("コマンドが見つからない")。
-
[解決済み] npm install エラー - ローカルの発行者証明書を取得できません。
-
[解決済み] nodejs - http.requestでresponse.writeを使用する場合、第一引数は文字列またはBufferでなければなりません。
-
[解決済み] バルク更新を行う。
-
[解決済み] NPMが同じエラーで固まる EISDIR: ディレクトリに対する不正な操作、エラーで読み込み (ネイティブ)
-
[解決済み] Mongoose Schema がモデルとして登録されていません。