运行node.js脚本后返回bash

运行node.js脚本后返回bash,node.js,bash,mongoose,Node.js,Bash,Mongoose,我有一个node.js脚本,它使用mongoose执行许多异步操作。我的问题是,当它完成时,我的终端将不会返回到调用脚本的bash提示符 这是我的一些代码: "严格使用", //将默认节点环境设置为“开发” process.env.NODE_env=process.env.NODE|env | |“开发” ... // Connect to database mongoose.connect(config.mongo.uri, config.mongo.options); var sendY

我有一个node.js脚本,它使用mongoose执行许多异步操作。我的问题是,当它完成时,我的终端将不会返回到调用脚本的bash提示符

这是我的一些代码:

"严格使用",

//将默认节点环境设置为“开发” 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);
  });

为什么会这样?这是错误的吗?

节点将保持运行,只要预期将进一步的事件添加到事件循环中。最好的猜测是,在查询完成后,与Mongo的连接没有关闭。但是,您必须至少共享一些代码,以便我们提供适当的帮助。@JonathanLonowski我刚刚添加了一些示例代码,我的实际代码没有错误。相关: