在nodejs完成任务后,gulp任务挂起

我定义了可以在gulp load运行的简单吞吐任务。 目的是获取没有location属性设置的用户数量。 但是,数字返回成功后,进程挂起terminal,我需要ctrl-c来停止它。 注意,这不是一个asynchronous调用,并使用mongoose插件来访问数据库。

 gulp.task('load', function () { dbCall.getUserNumberWithoutLocation(); }); var getUserNumberWithoutLocation = function() { var query = User.find({ 'location': null }); query.exec(function(err, users) { for (var i = 0; i < users.length; i++) { console.log(users[i].location); } console.log(users.length); }) }; 

       

网上收集的解决方案 "在nodejs完成任务后,gulp任务挂起"

尽pipe在gulp.task完成(这可能是我的本地机器问题)之后仍然没有提示,我把代码放在这里。 callback函数被传递到内部的getUserNumberWithoutLocation函数中,一旦User.find完成,它被调用。

 gulp.task('load', ['style'], function (callback) { dbCall.getUserNumberWithoutLocation(callback); }); exports.getUserNumberWithoutLocation = function(callback) { var query = User.find({'location': null}); query.exec(function(err, users) { console.log(users.length); if (err) { return callback(err); } callback(); }); };