2011-12-30 91 views
2

在這個問題上我一直在桌子上撞了2個小時,而我似乎無法找到解決方案。Mongoose query.remove()回調沒有被調用

這裏的問題代碼:

/* Users */ 

var mongoose = require("mongoose"); 

var User = new mongoose.Schema({ 
    a: String, 
    d: String 
}); 

var removeByDeviceToken = function(device_token, callback) { 

    this.findOne({ d: device_token }, function(error, user) { 
     if (error) { 
      callback(error); 
     } else if (user) { 
      user.remove(function(error) { 
       callback(error); 
      }); 
     } else { 
      callback(new Error("No users with that device token were found.")); 
     } 
    }); 
}; 

User["static"]("removeByDeviceToken", removeByDeviceToken); 
mongoose.model("User", User); 

的問題是很簡單,對於user.remove回調()不會被調用。 (用戶本身也沒有被移除。)

謝謝!

編輯:經過一些更多的測試後,看起來我已經定義了用於刪除的中間件被調用。我在MongoHQ上託管數據庫也可能是相關的。

編輯#2:經過幾天的測試,事實證明這個問題是因爲在我定義的刪除中間件中,我忘了調用next()函數。 facepalm

+0

只是一個快速通知,你不應該'User.static.removeByDeviceToken = removeByDeviceToken'? – alessioalex 2011-12-30 21:43:23

+0

感謝您的建議。說實話,我不太確定。我已經看到它使用這種方式,它似乎工作xD。在這種情況下該方法被稱爲好的。 – 2011-12-30 22:17:26

+0

請發表您自己的回答,然後接受。注意忘記調用next()或忘記將錯誤傳遞給成功回調函數。 – 2012-03-15 05:14:12

回答

4

經過幾天的測試,事實證明這個問題是因爲在中間件中我定義了刪除,我忘記調用next()函數。 facepalm

+0

我面臨與刪除方法相同的問題,我的文檔正在從數據庫中刪除,但回調沒有解僱。 – 2014-05-02 05:56:06

相關問題