如何将凭据传递给我的数据库连接类?

时间:2018-07-15 19:55:44

标签: node.js oop credentials

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

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

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

1 个答案:

答案 0 :(得分:1)

通常,.env(环境变量)用于存储敏感信息,例如数据库密码,secret_access_keys,app_ids等。建议将它们加载到server/app.js的环境变量中,然后直接使用它们在需要的地方使用process.env.VAR_NAME。因此,您可以在.env中加载server.js,并在需要的地方使用它。看看this starter by Microsoft,它将使您对用法有所了解。

您可以使用this package轻松加载.env