一尘不染

Node.js推迟Promisify +猫鼬

node.js

是否有人使用过nodejs模块“ deferred”和“
mongoose”?我试图让deferred.promisify方法可以在猫鼬模型的函数上工作,以便我可以轻松地将它们链接起来,但是会遇到一些麻烦。具体来说,我想对findfindById函数进行赋值处理,以便可以通过ObjectID链接查找另一个文档引用的一个文档。

这就是我所拥有的:https :
//gist.github.com/3321827

但是,这似乎并不理想,因为getAppPermissionsand
getApplication函数似乎只不过是猫鼬模型的findand和findById方法的包装器。

我尝试仅通过传递函数来实现承诺,但Object #<Object> has no method '_applyNamedScope'由于this不再绑定到正确的对象,因此出现了一个错误,似乎是由错误引起的。也许我需要使用underscore.bind?有没有人在这方面取得任何成功,还是我应该坚持现在的工作?


阅读 262

收藏
2020-07-07

共1个答案

一尘不染

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);
2020-07-07