2016-12-02 25 views
0

我已經寫了使用貓鼬其刪除MongoDB中的數據的功能,並保存在單獨的文件夾DB.js,代碼看起來像直到函數在節點JS

delete_user : function(data) { 
    connection.findOne({email:data}, function(err, result) { 
     connection.findById(result.id, function(err, val) { 
      if(err) { 
       throw err; 
      } 
      connection .findByIdAndRemove(val.id, function(err) { 
        if(err) { 
         throw err; 
        } 
      }); 
     }); 
    }); 
}, 

連接是執行如何調用wait使連接的MongoDB寫入到其它文件

在測試文件(用摩卡框架)需要,我需要的文件,並提出了調用該功能

after('Flust out the created user', function(done) { 
    Db.delete_user(req_body.email); 
    console.log("User "+req_body.email+" deleted"); 
    done(); 
}) 

相同的代碼使用兩種不同的測試文件說a.test.js和b.test.js

當我運行使用測試文件的摩卡

它拋出的錯誤因爲這是

Error: timeout of 10000ms exceeded. Ensure the done() callback is being called in this test. 

用戶從文件創建a.test.js從文件創建b.test.js分貝 用戶被刪除不刪除,則會引發錯誤

+0

我不能告訴你是問。如果你想知道什麼時候delete_user()完成了,你需要傳遞一個回調函數,當它完成時會被調用。 – jfriend00

回答

0

添加回調在你的函數:

delete_user : function(data, callback) { 
connection.findOne({email:data}, function(err, result) { 
    connection.findById(result.id, function(err, val) { 
     if(err) { 
      throw err; 
     } 
     connection .findByIdAndRemove(val.id, function(err) { 
       if(err) { 
        throw err; 
       } 
       return callback(); 
     }); 
    }); 
}); 
}, 

然後:

after('Flust out the created user', function(done) { 
    Db.delete_user(req_body.email, function(){ 
     console.log("User "+req_body.email+" deleted"); 
     done(); 
    }); 
})