我在这里使用 mongoose/q promises 框架示例,但在尝试使用 findOne 时似乎 nfbind 存在一些问题,主要是因为来自Q框架的示例似乎与要点中的示例不匹配。
我的代码:
var mongoose = require('mongoose');
var Q = require('q');
var user_schema = mongoose.Schema({username:String, last_touched:Date, app_ids:[String]});
var user = mongoose.model('user', user_schema);
exports.user = user;
exports.user.find = Q.nfbind(user.find);
exports.user.findOne = Q.nfbind(user.findOne);
如果我打电话user.findOne({username:'test'}).then(function(err, user) { ... }
,用户总是未定义的。如果我删除导出并使用带有回调的非承诺版本,我会得到用户。我错过了一些特殊的魔法,但是在查看了代码实现、来自 Q github 的示例和来自 mongoose 演示的示例之后......没有什么真正跳出来的。关于如何findOne
与 Q 合作的任何想法?
我也尝试nfbind
在源代码而不是模块中设置功能,但无济于事。