mla*_*tti 6 mongoose node.js promise deferred q
我在这里使用mongoose/q promises框架示例,但在尝试使用findOne时似乎与nfbind有一些问题,主要是因为Q框架中的示例似乎与gist中的示例不匹配.
我的代码:
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);
Run Code Online (Sandbox Code Playgroud)
如果我打电话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));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4698 次 |
最近记录: |