2011-12-30 2 views
2

Я уже стучал головой о стол, около 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

+0

Просто быстрое уведомление, разве вы не должны делать 'User.static.removeByDeviceToken = removeByDeviceToken'? – alessioalex

+0

Спасибо за предложение. Честно говоря, я не совсем уверен. Я видел, как он использовал этот способ, и он, похоже, работает xD. В этом случае метод называется хорошо. –

+0

Пожалуйста, напишите свой ответ и примите его. Следите за тем, чтобы забыть вызвать next() или забыть передать null для ошибки для успешного обратного вызова. –

ответ

4

После нескольких дней испытаний выясняется, что проблема в том, что в промежуточном программном обеспечении, которое я определил для удаления, я забыл вызвать функцию next(). facepalm

+0

Я сталкиваюсь с той же проблемой с методом удаления, мой документ удаляется из db, но обратный вызов не срабатывает. –

Смежные вопросы