2つのモデルがデータベースに追加された後、誰かがデータベースを閉じるのを手伝ってもらえますか?読んでみました
http://howtonode.org/intro-to-jake
Node.jsとJake-タスク内でシステムコマンドを同期的に呼び出す方法は?
およびgithubreadme( https://github.com/mde/jake)
しかし、それでもそれを理解できないようです。これがreadmeからの抜粋です
すべてのタスクの実行後のクリーンアップ、jake'complete'イベントベースの'jake'オブジェクトはEventEmitterであり、すべてのタスクの実行後に'complete'イベントを発生させます。これは、タスクがノードイベントループの実行を維持するプロセス(データベース接続など)を開始するときに役立つ場合があります。すべてのタスクが終了した後に実行中のNodeプロセスを停止することがわかっている場合は、次のように「complete」イベントのリスナーを設定できます。
jake.addListener('complete', function () {
process.exit();
});
現在のように、接続を開く前に接続を閉じています。
// db connect
var db = require('./schema');
desc('Seed MongoDB with initial data');
task('seed', [], function () {
//******* Populate the database
var user1 = new db.userModel({ email: 'x@x.com', password: 'x', phone: x });
user1.save(function(err) {
if(err) {
console.log(err);
} else {
console.log('user: '+user1.email +' saved');
}
});
var user2 = new db.userModel({ email: 'x', password: 'x', phone: x });
user2.save(function(err) {
if(err) {
console.log(err);
} else {
console.log('user: '+user2.email +' saved');
}
});
db.mongoose.connection.close();
console.log('Closed mongodb connection');
});
編集: parseqモジュールからの並列フローを使用して目的を達成することができました。
par(
function() {
fs.readFile("file1", this);
},
function() {
fs.readFile("file2", this);
},
function done(err, results) {
...
}
);
Edit2: それで私は本当にすべての助けに感謝します。また、あなたがparseqのメンテナーであるのを見ました:)。そのためのThx!私はまだこの最後のビットに苦労していて、関数5が完了したときに関数がハングし、done()を呼び出さない。私は「これ」を間違って呼んでいると確信しています。何かアドバイス?
seq(
function f1() {
var user = new db.userModel({ email: 'x'
, password: 'x'
, phone: x });
user.save(this);
},
function f2(err, value) {
var user = new db.userModel({ email: 'x'
, password: 'x'
, phone: x });
user.save(this);
},
function f3(err, value) {
var merchant = new db.merchantModel({ name: 'x'
, logourl: 'x' });
merchant.save(this);
},
function f4(err, value) {
var merchant = new db.merchantModel({ name: 'x'
, logourl: 'x' });
merchant.save(this);
},
function f5(err, value) {
db.merchantModel.findOne({ name: 'x' }, function(err, merchant) {
var coupon = new db.couponModel({ merchant_id: merchant.id
, name: 'x'
, imageurl: 'x'
, expiration: Date.UTC(2013,3,15) });
//, expiration: new Date(2013,3,15) }); //alternate date creation method
coupon.save(this);
});
},
function done(err) {
if(err) {
console.log(err);
} else {
console.log('successfully seeded db');
}
db.mongoose.connection.close();
console.log('Closed mongodb connection');
}
);