私は1台のサーバーに複数のデータベースをインストールしようとしています。このプロセスを開始するには、index.jsエクスポートオブジェクトに1つのデータベースを割り当てて、システムを構築するときに別のDBを追加できるようにします。以下は問題の説明です。SequelizeとNode.js:Module.Exportsとテーブルモデルの問題
server.jsファイルを実行すると、db1データベースの.sync関数がTable1とTable2を同期し、そのポートでリッスンを開始します。その明確なserver.jsファイルは、module.exports = db
からvar db = require('./models')
まで受信しています。しかし、モデル/ Table1.jsファイルでは、サーバーはエラーTypeError: Cannot read property 'Table1' of undefined
をスローします。私はモデル/ Table1.jsのDBのコンソール出力をチェックしましたが空ですので、このモデルではmodule.exports = db
にアクセスしていません。
誰かがこの問題を解決するソリューションを提供できますか?
Table1.jsモデルと上記他のファイルのための部分的なコードは、以下である:
モデル/ Table1.js
var db = require('./.')
[...]
var new_instance = db.db1.Table1.build({...})
server.js
var db = `require('./models')`
[...]
db.db1.sync(function(err) {});
モデル/ index.js
var sq = new Sequelize(dbname, user, password, config);
db['db1'] = {
Sequelize: Sequelize,
sequelize: sq,
Table1: sq.import(__dirname + '/...'),
Table2: sq.import(__dirname + '/...')
}
module.exports = db;
var new_instance = db.db1.Table1.build({...})のコードをスクリプトに挿入して、データをDBに保存できますか? – JnL
はい、簡単な例を示すために答えを編集しました。 – piotrbienias
明確な答えと説明をいただきありがとうございます。私は今日まで印象があったことを知っています。すべてのDBセーブコマンドはモデル内で実行しなければなりません。あなたのガイダンスごとにシステムのロジックを書き直すことができました。すごくうまくいった! – JnL