在這個問題上我一直在桌子上撞了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
只是一個快速通知,你不應該'User.static.removeByDeviceToken = removeByDeviceToken'? – alessioalex 2011-12-30 21:43:23
感謝您的建議。說實話,我不太確定。我已經看到它使用這種方式,它似乎工作xD。在這種情況下該方法被稱爲好的。 – 2011-12-30 22:17:26
請發表您自己的回答,然後接受。注意忘記調用next()或忘記將錯誤傳遞給成功回調函數。 – 2012-03-15 05:14:12