できるだけ簡潔にしようと思います - save() 部分が非同期的に呼び出された場合でも、Mongoose はスクリプト全体が終了するまでレコードを保存しないようです:
var reallyBigData = require('./data.json');
var importData = function(data) {
var newObj = new Obj; // Mongoose Object
newObj.x = data.x;
newObj.save();
};
this.on('importData', importData);
for(var i in reallyBigData) {
this.emit('importData', reallyBigData[i]);
};
これは大まかな単純化ですが、アイデアはわかります。スクリプトを実行して Mongo にクエリを実行すると、スクリプトの実行中にレコードが表示されません。数を 30 に制限してインポートすると、すぐに終了し、後でレコードが表示されます。
スクリプトの実行中に Mongoose が各レコードを保存しないのはなぜですか?