是否有人使用过nodejs模块“ deferred”和“ mongoose”?我试图让deferred.promisify方法可以在猫鼬模型的函数上工作,以便我可以轻松地将它们链接起来,但是会遇到一些麻烦。具体来说,我想对find和findById函数进行赋值处理,以便可以通过ObjectID链接查找另一个文档引用的一个文档。
find
findById
这就是我所拥有的:https : //gist.github.com/3321827
但是,这似乎并不理想,因为getAppPermissionsand getApplication函数似乎只不过是猫鼬模型的findand和findById方法的包装器。
getAppPermissions
getApplication
我尝试仅通过传递函数来实现承诺,但Object #<Object> has no method '_applyNamedScope'由于this不再绑定到正确的对象,因此出现了一个错误,似乎是由错误引起的。也许我需要使用underscore.bind?有没有人在这方面取得任何成功,还是我应该坚持现在的工作?
Object #<Object> has no method '_applyNamedScope'
this
Mariusz的答案非常接近。这是在这种情况下最终对我有用的东西,希望其他人可以从中学到:
// I put this in my model file so I didn't have to worry about repeating it var userProto = mongoose.model('User'); userProto.pFind = deferred.promisify(userProto.find); userProto.pFindOne = deferred.promisify(userProto.findOne);