【问题标题】:Mongoose query.remove() callback not being called未调用 Mongoose query.remove() 回调
【发布时间】:2011-12-30 21:16:00
【问题描述】:

在这个问题上,我已经在桌子上敲了大约 2 个小时,但我似乎找不到解决方案。

问题代码如下:

/* 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() 函数。 掌心

【问题讨论】:

  • 请注意,您不应该这样做User.static.removeByDeviceToken = removeByDeviceToken 吗?
  • 感谢您的建议。老实说,我不太确定。我已经看到它以这种方式使用,并且似乎可以工作 xD 。在这种情况下,该方法被正常调用。
  • 请发表您自己的答案,然后接受。注意忘记调用 next() 或忘记将错误传递给成功回调的 null。

标签: javascript node.js mongodb mongoose


【解决方案1】:

经过几天的测试,问题出在我为删除定义的中间件中,我忘记调用 next() 函数。掌心

【讨论】:

  • 我在使用 remove 方法时遇到了同样的问题,我的文档正在从数据库中删除,但回调没有触发。
猜你喜欢
  • 1970-01-01
  • 2016-01-08
  • 2014-06-20
  • 2018-04-03
  • 2014-11-19
  • 2016-01-11
  • 2018-07-31
  • 2019-05-10
  • 2014-03-20
相关资源
最近更新 更多