当前位置: 首页 > 面试题库 >

Node.js推迟Promisify +猫鼬

姬乐
2023-03-14
问题内容

是否有人使用过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?有没有人在这方面取得任何成功,还是我应该坚持现在的工作?


问题答案:

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


 类似资料:
  • 问题内容: 我只使用了bluebird几天,但是我想遍历所有旧代码及其:) 我的问题是我仍然没有完全掌握命令的流程。 考虑以下两个块: 一个 乙 在方案A 中将得到的结果?在B中,他们都得到了第一个承诺的结果? 第二个与从bluebird 运行有何不同? 这些A / B / 在使用方法方面有何不同(我在哪里放置它)。 抱歉,这是一堆问题。 问题答案: 欢迎来到美好的承诺世界。 在您的示例中如何工作

  • 问题内容: 我想知道在node.js中使用是否等效于延迟加载? 例如,如果我有一个函数需要代码中其他任何地方都不需要的特定node.js包,那么我最好在该函数内部使用它,以便仅在调用该函数时才包含所需的包。 我还不确定是否会由于缺乏对node.js架构的了解而在性能方面有所改善?我想它每次与服务器的连接都会使用更少的内存。但是,当它必须读取程序包时,它会增加磁盘的I / O吗,还是将其添加到内存中

  • 在spring-AMQP中,有可能以某种方式推迟监听来自某个特定队列的消息吗? 在我的用例中,我有一个服务,它必须侦听两个RabbitMQ队列上的消息。第一个专用于此服务,第二个用于my service的多个实例(运行在不同的机器上)的负载平衡作业。 我的statup服务通过第一个队列接收配置并自我配置。只有在配置之后,才允许处理第二个队列中的“标准”作业--而不是在配置之前。 我怎样才能做到这一

  • 我需要将一个数组中的对象推入数据库,但我得到了一个错误。我做错了什么?我发现这样一个话题,通过猫鼬将物品推入mongo数组却无法正确应用.............................................................. 当我尝试这个代码时,我得到了这个答案 MongooseError:文档在保存前必须有_ID

  • 问题内容: 假设我有以下功能 如规范中所述: 每次执行“ defer”语句时,将照常评估调用的函数值和参数并重新保存,但不会调用实际函数。 显然,函数执行结束时将输出零。但是,如果我想打印出变量的最终值该怎么办? 我提出了以下解决方案: 所以我想知道是否有更好的方法来解决此问题。 问题答案: 如果defer有参数,则在defer语句的行对其进行评估;以下代码段对此进行了说明,其中defer将显示0

  • 问题内容: 我正在关注Stephen Grinder的教程,在那里他开始使用Promisify。 为此,他给出了非常模糊的解释,说redis需要回调函数,并且他发现非常不整洁+ redis不支持NodeJS中的promises。 然后他做了这样的事情 出于某种原因,我发现该解释含糊不清,有人可以以最人性化的方式进行解释吗?像他的意思和我们在做什么? 问题答案: 当您要将回调函数转换为基于promi