将两个模型添加到数据库后,有人可以帮我关闭数据库吗?我试过阅读
http://howtonode.org/intro-to-jake
Node.js 和 Jake - 如何在任务中同步调用系统命令?
以及 https://github.com/mde/jake上的 github 自述文件
但似乎仍然无法弄清楚。这是自述文件的摘录
所有任务运行后的清理,jake 'complete' 事件 基本的 'jake' 对象是一个 EventEmitter,并在运行所有任务后触发一个 'complete' 事件。当任务启动一个保持节点事件循环运行的进程(例如,数据库连接)时,这有时很有用。如果您知道要在所有任务完成后停止正在运行的 Node 进程,您可以为“完成”事件设置一个侦听器,如下所示:
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 的维护者 :)。谢谢!我仍在为最后一点苦苦挣扎,当函数 5 完成时,我的函数挂起并且没有调用 done()。我确定我错误地调用了“this”。有什么建议吗?
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');
}
);