我定义了可以在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);
})
};
答案 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();
});
};