我正在使用 async.js 在集合上运行 for 循环。出于性能原因,我想将数据库连接传递给迭代器方法,这样它就不会在每次迭代器运行时打开/关闭数据库连接。我将 mongoose.js 用于我的数据模型。
下面的代码获取 mongo 中的所有艺术家,然后为每个艺术家添加一首歌曲。我的问题是,如何在 addArtistSong 中使用来自 updateAllArtists 的相同数据库连接?
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 调用中传递它呢?