【问题标题】:Nodejs call controller function from controller and refactor answerNodejs从控制器调用控制器函数并重构答案
【发布时间】:2019-03-12 09:43:41
【问题描述】:

我在 Node.js 中有两个 Express 控制器,A 和 B,A 有一个返回数据的函数。我希望 B 调用该函数,拦截答案并在重构后返回它。像这样:

A{
  search(req,res){...}
}
B{
  wrapper(req,res){
    A.search(req,?).then((repsonse)=>{
      <refactor response>;
      res.send(refactoredData);
    })
  }
}

我不知道如何从 B 调用 A.search,我不想更改 A,A.search 中没有 next(),如果我调用 A.search(req,res ) 使用包装器的参数,我只是重定向了调用,对吧?

【问题讨论】:

  • 我真的不明白这里有什么问题。您可以使用 req/res 参数调用不同类中的方法。虽然上面的代码显然是一个不可运行的示例,但我想知道您是否考虑过 A.search 解析/拒绝 B.wrapper 所期望的承诺。
  • 什么是搜索以及它是如何工作的?是你自己的功能吗?然后重写它。该问题缺少 stackoverflow.com/help/mcve 。 Node.js 中没有控制器。如果您指的是 Express,请明确说明并添加相关标签。这其实是 Koa 解决的 Express 的根本问题。
  • @estus 你说得对,这是一个 Express 问题,我只是手拉手使用了两个,所以我忘了提。这是我的功能,但它不仅仅是一个功能,它是一个示例。我希望将其应用于多个功能。

标签: node.js express


【解决方案1】:
if you do not want to change the controller A. than you can create a callback function in B. and assign it to res.send like below :

A{
  search(req,res){ res.send(response);}
}

B{
   function sendcallback(response){
     <refactor response>;
  }
  wrapper(req,res){
    var fakeRes = {"send": sendcallback}
    A.search(req,fakeRes);
  }
}

【讨论】:

  • (我将问题更新为特定于 Express.js)这个想法很好,但它不适用于 express Response。我刚刚意识到我正在将结果输入 res 中,但此时我不能再投入研究时间了,我必须快速而肮脏地完成它。谢谢你的想法!
猜你喜欢
  • 1970-01-01
  • 2022-01-16
  • 2017-10-01
  • 2014-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多