>我有几个咕噜咕噜的任务在我的MySql数据库上执行操作。
为了公开数据库 ORM,我首先需要实例化它,然后在回调中运行数据库调用。
问题是,由于每个繁琐的任务都是单独运行的,所以我必须为每个任务实例化ORM。
这是我用来实例化数据库的代码片段
例如,假设我正在尝试这样做:
grunt.registerTask('import:cleanUsers', 'Clean the DB', function() {
var done = this.async();
var sql = 'delete from user';
sailsTasksModels.init(function(ontology) {
ontology.collections.country.query(sql, function(err, results) {
if (!err) console.log('User table has been emptied');
done(results);
});
});
});
grunt.registerTask('import:cleanRadios', 'Clean the DB', function() {
var done = this.async();
var sql = 'delete from radio';
sailsTasksModels.init(function(ontology) {
ontology.collections.country.query(sql, function(err, results) {
if (!err) console.log('Radio table has been emptied');
done(results);
});
});
});
grunt.registerTask('import:cleanCampaigns', 'Clean the DB', function() {
var done = this.async();
var sql = 'delete from campaign';
sailsTasksModels.init(function(ontology) {
ontology.collections.country.query(sql, function(err, results) {
if (!err) console.log('Campaign table has been emptied');
done(results);
});
});
});
grunt.registerTask('import:deleteAll', [
'import:cleanUsers',
'import:cleanRadios',
'import:cleanCampaigns'
]);
当运行grunt import:deleteAll时,脚本将在第二个任务上崩溃,告诉我适配器已经被初始化。
所以我的问题是,我如何在同一个 sailsTasksModels.init 回调中运行我的三个任务?
谢谢
一种选择是使用 grunt set:
文档: http://gruntjs.com/api/grunt.config#grunt.config.set
- 注册主任务
- 在模块的其他文件中设置配置
在我的一个帆.js项目中的例子:https://github.com/ABS-org/we-cdp/blob/master/tasks/config/watch-sass-theme.js#L8