【发布时间】: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