我正在尝试编写一个简单的grunt任务来将对象保存到mongoose集合中。我遇到了save命令的问题。它不会打印出任何错误或保存消息。我不知道为什么。我已经通过mongo shell检查了这个集合,但它没有保存。
var db = require('./db/schema');
module.exports = function(grunt) {
grunt.registerTask('adduser', 'add a user to the database', function(usr) {
var user = new db.userModel({ username: usr});
console.log(user);
user.save(function(err) {
if(err) {
console.log('error: ' + err);
} else {
console.log('saved user: ' + user.username);
}
});
});
};
输出
$ grunt adduser:bob
Running "adduser:bob" (adduser) task
{ username: 'bob' }
Done, without errors.
输出应该显示'错误:错误消息'或'已保存用户:bob'。但是这段代码由于某种原因没有被执行。
答案 0 :(得分:1)
user.save
调用是异步的,因此您需要将Grunt任务置于异步模式,如here所示。
它应该是这样的:
grunt.registerTask('adduser', 'add a user to the database', function(usr) {
var user = new db.userModel({ username: usr});
// Invoke async mode
var done = this.async();
console.log(user);
user.save(function(err) {
if(err) {
console.log('error: ' + err);
} else {
console.log('saved user: ' + user.username);
}
// Signal to Grunt that the async task is complete.
done();
});
});