2013-04-30 71 views
2

我正在嘗試寫一個簡單的咕task任務來保存一個對象到貓鼬集合。我遇到了保存命令的問題。它不會打印出任何錯誤或保存消息。我不知道爲什麼。我通過mongo shell檢查了這個系列,並沒有保存。咕task任務保存貓鼬對象

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. 

輸出應該說 '錯誤:錯誤消息' 或 '已保存的用戶:鮑勃'。但是這個代碼由於某種原因沒有被執行。

回答

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(); 
    }); 
}); 
+0

謝謝。我現在執行drop任務時遇到問題。也許你可以幫忙?這是一個錯誤,並且連接永遠不會關閉,也不會輸出任何結果。 grunt.registerTask( '下降', '刪除數據庫',函數(){ VAR進行= this.async(); db.mongoose.connection.db.dropDatabase(函數(ERR){ 如果(ERR){ 的console.log(ERR); }其他{ 的console.log( '成功刪除數據庫');} db.mongoose.connection.close(完成); }); }); – user1071182 2013-04-30 21:58:42

+0

我創建了一個新的問題在這裏:http://stackoverflow.com/questions/16310627/grunt-task-to-drop-mongoose-database – user1071182 2013-04-30 23:38:22

+0

你如何在咕嚕貓鼬連接? – CodyBugstein 2015-06-04 22:46:23