无论是用于 API 还是数据库,您都不应该在代码存储库中存储凭据,因为这样任何协作者都可以访问您的数据库。最常见的方法是使用环境变量使它们可以根据代码运行在哪台机器上进行配置。
如果您从类似 Linux 的终端(例如 Bash)调用 Node,您可以像这样传递环境变量:
DB_HOST=mydb.com DB_USER=myUser node myscript.js
在您的代码中,您可以通过process.env 访问它:
const {
DB_HOST = 'localhost', // a non-sensitive default value
DB_USER = 'root',
} = process.env
const mariadb = require('mariadb')
const pool = mariadb.createPool({host: DB_HOST, user: DB_USER, connectionLimit: 5})
因为从长远来看,每次从终端调用脚本时设置环境变量都很乏味,聪明人发明了 dotenv (.env) 文件的概念来存储可配置变量。dotenv 包将除非已定义属性,否则查找此类文件并将其值应用于环境。
使用它就像在您的项目根目录中创建一个名为.env 的文件一样简单:
DB_HOST=mydb.com
DB_USER=myUser
重要提示:必须将此文件添加到您的.gitignore,以避免将您的凭据暴露给无意的查看者。
并修改之前的脚本:
require('dotenv').config() // Add this to apply missing things to process.env before we read from it
const {
DB_HOST = 'localhost',
DB_USER = 'root',
} = process.env
const mariadb = require('mariadb')
const pool = mariadb.createPool({host: DB_HOST, user: DB_USER, connectionLimit: 5})
延伸阅读:The Twelve-Factor App - III. Config