在nodejs完成工作后gulp任务挂起

时间:2016-01-25 14:16:42

标签: node.js gulp

我定义了可以在gulp load终端中运行的简单gulp任务。目的是获得没有设置location属性的用户数。 但是,在数字成功返回后,进程会在终端中挂起,我需要ctrl-c来阻止它。注意,这不是异步调用,而是使用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);
    })
};

1 个答案:

答案 0 :(得分:1)

尽管在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();
    });
};