私はasync.jsを使用して、コレクションに対してforループを実行しています。パフォーマンス上の理由から、データベース接続をイテレータメソッドに渡して、イテレータが実行されるたびにdb接続を開いたり閉じたりしないようにします。データモデルにmongoose.jsを使用しています。
以下のコードは、mongoのすべてのアーティストを取得し、それぞれに曲を追加します。私の質問は、addArtistSongのupdateAllArtistsから同じdb接続をどのように使用できるかということです。
function updateAllArtists() {
var db = mongoose.createConnection('localhost/dbname');
var Artist = db.model('Artist', artistSchema);
Artist.find({}, function(err, artists) {
// for each artist, add a song
async.forEach(artists, addArtistSong, function(err) {
});
}
function addArtistSong(artist, cb) {
// THIS IS WHERE I NEED A DB CONNECTION
var Song = db.model('Song', songSchema);
}
addArtistSong(artist、db、cb)のように、イテレータ署名を何らかの方法で拡張できますか?次に、forEach呼び出しからこれをどのように渡しますか?