asynchronous - Grunt 任务删除 mongoose 数据库

标签 asynchronous mongoose gruntjs

我正在尝试创建一个 grunt 任务来通过 mongoose 删除 mongodb 数据库。连接挂起,我必须强制退出,但它实际上并没有删除数据库或输出错误。

var db = require('./db/schema');

grunt.registerTask('drop', 'drop the database', function() {
  // async mode
  var done = this.async();

  db.mongoose.connection.db.dropDatabase(function(err) {
    if(err) {
      console.log(err);
    } else {
      console.log('Successfully dropped db');
    }
    db.mongoose.connection.close(done);
  });

});

输出

$ grunt drop
Running "drop" task
Successfully connected to: mongodb://localhost/test
^C

最佳答案

终于在这里找到了我的问题的解决方案:https://groups.google.com/forum/?fromgroups=#!topic/mongoose-orm/Cck_VND80r8必须将所有内容包装在connection.on中

grunt.registerTask('drop', 'drop the database', function() {
// async mode
var done = this.async();

db.mongoose.connection.on('open', function () { 
  db.mongoose.connection.db.dropDatabase(function(err) {
    if(err) {
      console.log(err);
    } else {
      console.log('Successfully dropped db');
    }
    db.mongoose.connection.close(done);
  });
});
});

关于asynchronous - Grunt 任务删除 mongoose 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16310627/

相关文章:

javascript - JSHint 认为 Jasmine 函数是未定义的

html - 使用 yeoman/grunt 部署的站点显示神秘的黑匣子

javascript - Grunt Shell 输出到其他任务

c# - 等待 ExecuteAsync() 结果

javascript - Node.js - 从回调到主函数的返回值

javascript - 尽管收到有效的操作有效负载(异步身份验证调用),为什么我的 Redux 状态没有更新

node.js - Node-acl 方法 "isAllowed"总是意外返回 false

javascript - 如何访问 MongoDB 中的图像文件并使用 Express.js 将它们发送到客户端

javascript - 等到嵌套的 promise 解决

ios - GCD/NSOperationQueue EXC_BAD_ACCESS