Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何将凭据传递到我的数据库连接类?_Node.js_Oop_Credentials - Fatal编程技术网

Node.js 如何将凭据传递到我的数据库连接类?

Node.js 如何将凭据传递到我的数据库连接类?,node.js,oop,credentials,Node.js,Oop,Credentials,我正在为大学项目构建小型API,我正在使用NodeJS。在这种情况下,我使用的技术并不重要,问题更一般。 我有以下一组文件和类: js创建RequestHandler类的实例。 RequestHandler实例作为PropertiesStorage类的实例。 最后,PropertiesStorage有一个DatabaseAccessor实例 所有这些类都是我自己创建的,我想创建一些逻辑抽象层,我认为这是一种推荐的方法。DatabaseAccessor使用数据库的提供者SDK。此SDK需要一些凭据

我正在为大学项目构建小型API,我正在使用NodeJS。在这种情况下,我使用的技术并不重要,问题更一般。 我有以下一组文件和类: js创建RequestHandler类的实例。 RequestHandler实例作为PropertiesStorage类的实例。 最后,PropertiesStorage有一个DatabaseAccessor实例

所有这些类都是我自己创建的,我想创建一些逻辑抽象层,我认为这是一种推荐的方法。DatabaseAccessor使用数据库的提供者SDK。此SDK需要一些凭据、数据库id等。 所以我需要以某种方式将这些凭证传递给DatabaseAccessor。我看到了两种解决方案,但在我看来,这两种方案都不完美。凭据存储在config.js文件中。 我的想法是: 1.在DatabaseAccessor中加载config.js-这似乎是一个很好的解决方案,但是DatabaseAccessor变得有点太依赖于这个文件的位置和结构,我认为这个类应该更可重用, 2.通过我的每个类的构造函数传递从index.js开始到DatabaseAccessor结束的凭据-我不喜欢这样,因为中间类与我的数据库实现紧密相连。同样,我希望每个类都是可重用的,即使将来我更改了数据库提供程序或类型。我希望有一个像IDatabaseAccessor这样的接口,它的每个实现可能都有一组不同的凭证

你能给我什么建议?我真的很想在这种情况下学习好的做法。 我试图在互联网上找到一些解决方案,但我只发现了一些关于向Jenkins注入凭据的问题,我甚至不知道这些问题是什么。

通常。env环境变量用于存储敏感信息,如数据库密码、秘密访问密钥、,app_id等。建议将这些变量加载到server/app.js中的环境变量中,然后在需要时使用process.env.VAR_NAME直接使用它们。因此,您可以在server.js中加载.env,并在需要时使用它。看一看,它会给你一个关于用法的好主意


您可以使用来轻松加载.env。

您可以使用.env文件来存储凭据。加载这个.env,您可以使用process.env.VARIABLE\u NAME在任何地方访问这些变量。@Itainme您的建议只是存储凭据的另一种方式,我使用了config.js。你认为我应该在哪里加载这个文件?DatabaseAccessor内部?通常.env环境变量用于存储敏感信息,如数据库密码、密钥、应用程序ID等。在我制作的应用程序中,我将这些环境变量加载到我的服务器/app.js中,然后在需要时使用process.env.VAR\u名称直接使用它们。因此,您可以在server.js中加载.env,并在需要时使用它。看一看,它会让你对使用有一个很好的了解。还要注意,你实际上不必向任何文件传递任何凭据,NodeJS会在每次导入中返回每个模块的当前状态。所以一旦你初始化了数据库,无论你在哪里导入你的数据库_helper.js,我都会导入相同的状态。谢谢@itaintme,你的解释真的帮了我的忙,我会按照你的建议去做。如果您关心这些问题,请添加您的评论作为答案,我当然会接受。关于你最后的评论,你能更具体一点吗?我真的不明白你的意思。我创建的所有模块基本上都是类,我在每个模块中导出一个类。当我导入其中任何一个实例时,我会创建一个新实例。我认为你的评论是关于包含一些变量和函数的模块。我想这不适合我的情况