繁体   English   中英

通过依赖注入传递参数

Passing argument with dependency injection

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我在unbound.js中具有以下代码的功能

export default async function connect({ mongoose: mongoose }, URI) {
console.log('in connect');
  mongoose.connect(URI);
  mongoose.Promise = global.Promise; 
  });
}

然后,我有另一个index.js来处理依赖项注入,如下所示

module.exports = async url => {
  return await require("./unbound").default.bind(
    null,
    {
      mongoose: require("mongoose")
    },
    url
  );
};

我所做的与普通香草依赖注入不同的唯一事情是将URL作为参数传递。

当我从index.js调用导出时,没有任何响应。 通过console.log确认不输出

关于如何解决此问题的任何指导?

2 个回复

由于聊天受到限制,因此我将在此处发布答案。 在此代码段中,导出一个function ,该function在被调用时返回另一个function

 module.exports = async url => {
  return await require("./unbound").default.bind(
    null,
    {
      mongoose: require("mongoose")
    },
    url
  );
};

因此,如果要实际运行它,则必须调用两次,例如require('./')()()

正如其他人所建议的那样,bind返回一个可以调用的绑定函数,但实际上并没有调用该函数-那是.apply或.call所做的。 @ptdien的解决方案在某种程度上是正确的,但是它不起作用,因为您忘记了返回mongoose.connect返回的承诺,因此您的connect函数返回未定义的内容,因此没有任何要等待的调用方。 即您需要这样做:

 export default function connect({ mongoose: mongoose }, url) { mongoose.Promise = global.Promise; return mongoose.connect(url); } 

(还要注意,我已经删除了async关键字,因为当我们不使用await时这是不必要的-代码已经返回了promise。

另外,bind会在绑定的参数之后自动转发参数(例如,本例中为url),因此您可以将代码简化为:

 module.exports = require("./unbound").default.bind( null, { mongoose: require("mongoose") } ); 

顺便说一句,您必须附加.default的原因是因为您混合了node.js需求和ES6导入。 选择一个并坚持下去。

1 依赖注入和传递参数

我有一个关于PHP中的依赖注入的问题。 我目前有这3个课程: Staff.php Projects.php ProjectsManager.php 这些类的实例化如下: 上面的工作正常,但是我想做的是这样的: 如何处理依赖关系以实现此目的? ...

2 依赖注入将参数传递给依赖

因此,我通过Stackoverflow进行搜索,但仍然没有解决我的问题的方法。 我试图将一个依赖项注入到一个类中,这很容易通过构造函数完成,但是我想将一些参数传递给该依赖项。 我尝试使用服务提供商没有成功。 我对这个概念有点陌生,所以我肯定做错了什么。 我有一个需要SoapCli ...

3 通过依赖注入将参数传递给__construct

我正在创建一个User类,它应该是一个Entity类。 在DataBase中,我创建了User表,它有20个字段。 我的问题是:用20个参数创建一个“__construct()”还是应该用户setter / getter? 我最近阅读了一些关于依赖注入的文章,以及它如何使代码更易于 ...

4 依赖注入 - 传递对象

我正在创建基于OOP原则的东西,我正在尝试应用依赖注入。 我知道我可能在这里做错了,整个DI事情似乎更令人困惑,可能是因为我仍然在努力让自己深入了解它。 我已经创建了一个Form类,它将输出各种表单元素,但是表单类至少需要两个其他类(创建为对象)才能正常运行。 这是我如何得到它: ...

5 将参数传递给耙依赖

我知道如何将参数传递给rake任务,但是我无法解决如何将参数传递给依赖任务。 我有一个仅运行相关任务列表的任务: 我需要添加一个名为:omega的任务: 但是我需要将参数传递给它。 我不想将参数传递给:foo-我只想将参数硬编码到相关任务中。 我想这样做(我知道这是无效 ...

2016-07-19 16:20:56 1 140   ruby/ rake
6 Symfony依赖注入容器不应作为参数传递

今天早上,SensioLabs Insight从我的一个分发包中删除了白金徽章。 Symfony依赖注入容器不应作为参数传递。 已找到一个Symfony依赖项注入容器作为参数。 该方法是以下服务的一部分: 我知道我可以像这样将容器作为构造函数参数传递: ...

7 C# ILogger 依赖注入错误:没有参数

我有一个 Docker DotNet Core 控制台应用程序,用于处理来自队列的消息。 有一个叫做SimulationEngine的类,我期待ILogger被依赖注入自动传递 这是创建实例的方式: DI 可以很好地将 logger 注入RunsQueueProcessor ,但是当我尝 ...

8 依赖注入参数空异常

我有一个带有依赖注入的 Startup.cs 文件,如下所示: 我有以下接口和类“LocalizationRepository”: 在运行它时,我看到一个 ArgumentNullException - 值不能为空。 (参数“定位器”)。 我错过了什么? 调用堆栈: ...

9 带有构造函数参数的子类的工厂依赖注入

我有一个使用Ninject进行DI的应用程序,并且具有以下构造: 因此,正常的注射将无法正常工作。 我需要一家工厂。 所以我可以做类似的事情: 我已经敏锐地知道了。 但是,如果这样做,我将失去所有的DI优势,例如生命周期管理,或者将一个实现换成另一个实现。 有没有更优雅的 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM