Я уже стучал головой о стол, около 2 часов по этому вопросу, и я не могу найти решение.Mongoose query.remove() callback не называется
Вот код проблемы:
/* 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() не вызываются. (Сам пользователь не удаляется.)
Спасибо!
EDIT: После нескольких испытаний выясняется, что промежуточное программное обеспечение, которое я определил для удаления, вызывается. Также может быть актуальным, что у меня есть БД на MongoHQ.
EDIT # 2: После нескольких дней тестирования выясняется, что проблема в том, что в промежуточном программном обеспечении, которое я определил для удаления, я забыл вызвать функцию next(). facepalm
Просто быстрое уведомление, разве вы не должны делать 'User.static.removeByDeviceToken = removeByDeviceToken'? – alessioalex
Спасибо за предложение. Честно говоря, я не совсем уверен. Я видел, как он использовал этот способ, и он, похоже, работает xD. В этом случае метод называется хорошо. –
Пожалуйста, напишите свой ответ и примите его. Следите за тем, чтобы забыть вызвать next() или забыть передать null для ошибки для успешного обратного вызова. –