私はMEANスタックプロジェクトに取り組んでおり、1つのコントローラから別のコントローラに一連の変数を渡そうとしています。Node.JSで複数のオブジェクトをエクスポートする
module.exports = {
Router: router,
artists: distinctArtistsArray
}
ルータオブジェクトは、伝統的なExpressルータですが、distinctArtistsArray
は私のMongoDBデータベース内のすべてのアーティストのString配列である:私の現在のアプローチは、私の**artworks.js**
コントローラファイルに対して複数のオブジェクトをエクスポートすることです。私はバックグラウンドで実行されている非同期関数を毎時入れていますdistinctArtistsArray
。この配列は、シーンの背後にいくつかのNLPタスクを実行するために、他の場所に書き込まれた他の関数に渡されます。
アーティスト情報の重複した非同期クエリを作成してMongoDBに過度の負荷をかけたくないので、別のコントローラもこれらの変数にアクセスしたいと思っています。ここに私の他のコントローラ(complete.js
)があります:
router.get("/", (req, res) => {
var ArtworkSearch = require('../controllers/artworks.js');
console.log(ArtworkSearch.artists)
});
私は連続した値に要求が/complete
エンドポイントをヒットするたびに再インポートしたいので、私は、コールバック関数内require('../controllers/artworks/js')
を配置しました。
私のコンソールでは、私は空の配列([]
)を受け取ります。これは、私が初期化するものですdistinctArtistsArray
になります。参考までに、同じようなトピックのこのSO postで受け入れられた回答と同じ正確な方法を実行しました。
complete.js
コントローラで私のアーティストのリストを入手するにはどうすればよいですか?
'distinctArtistsArray'が最初は空の場合、どのように値を取得しますか?そのプロパティの最新の値を確認するために再インポートする必要はありません。モジュールはキャッシュされているため、再インポートではモジュールが再び実行されることはありません。キャッシュされたモジュールを最初から返します。 – jfriend00
ありがとうございます。私はモジュールがノードにキャッシュされていることを知らなかった! –