我正在使用 mongoose/q Promise 框架示例here https://gist.github.com/2660323,但在尝试使用 findOne 时,nfbind 似乎存在一些问题,主要是因为来自Q https://github.com/kriskowal/q框架似乎与要点不符。
My code:
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
在源代码中而不是在模块中起作用,但无济于事。
因为您要绑定的方法是user
对象,你需要bind
在将它们传递给之前将它们传递给该对象nfbind
所以这样this
调用时指针被保留。
这种方法对我有用:
exports.user.find = Q.nfbind(user.find.bind(user));
exports.user.findOne = Q.nfbind(user.findOne.bind(user));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)