2

我正在尝试编写一个简单的 grunt 任务来将对象保存到猫鼬集合中。我在保存命令时遇到问题。它不会打印出任何错误或保存消息。我不确定为什么。我已经通过 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.

输出应显示“错误:错误消息”或“保存的用户:鲍勃”。但是由于某种原因,这段代码没有被执行。

4

1 回答 1

1

user.save调用是异步的,因此您需要将 Grunt 任务置于异步模式,如此处所示

它应该是这样的:

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();
    });
});
于 2013-04-30T20:57:50.280 回答