我有一个node.js脚本,它使用mongoose执行许多异步操作。我的问题是,当它完成后,我的终端将不会返回调用脚本的bash提示符。
这是我的一些代码:
'use strict';
//将默认节点环境设置为开发 process.env.NODE_ENV = process.env.NODE_ENV || '发展';
...
// Connect to database
mongoose.connect(config.mongo.uri, config.mongo.options);
var sendYouHaveNewEmail = function (invoice, to_user) {
var data = {
from: 'asfd@asfd.adsf',
to: to_user.email,
subject: 'You have new Stuff',
html: jade.renderFile(__dirname + '/../' + 'mytemplate.jade')
})
};
mailer.send(data, function (error) {
if (error) {
console.log("An error occurred sending a email to", to_user.email);
}
});
};
Schedule.find({name: 'myname'}).exec()
.then(function (results) {
var ids = _.map(results, function (schedule) {
return schedule.person_id;
});
Person.find({_id: {$in: ids}}).exec()
.then(function (persons) {
if (persons.length == 0) return;
_.forEach(persons, function (person) {
Profile.findOne({user_id: person._id}).exec()
.then(function (profile) {
...
console.log("I'm done");
})
.end(function (err) {
console.log("An error occurred ", err)
});
});
})
.end(function (err) {
console.log("An error occurred ", err);
});
})
.end(function (err) {
console.log("An error occurred retrieving Schedule list", err);
});
为什么会这样?这是错的吗?