Express4:存储数据库实例

时间:2017-02-01 14:12:28

标签: node.js express

在express4中,将数据库实例存储在app.locals中或使用app.set存储它是不好的做法吗?因为我正在思考它,因为我将在整个应用程序中使用它,因此访问起来会更容易。

1 个答案:

答案 0 :(得分:3)

它应该工作得很好,不,我不认为这是不好的做法(至少不是可怕的) - 毕竟,app.locals是打算为您提供一个放置全球价值的安全场所。

但是,使用Express来存储这样的各种全局值会导致应用程序紧密绑定到Express。如果您决定要删除Express并将其替换为其他内容,那么您将不得不追捕并更改现在分散在整个代码中的app.local所有引用。

如果你想避免这种情况,一个简单的模式是创建一个模块,导出你想要的值 - 这允许你将所有相关的代码保存在一个地方,并在需要时导入它。例如:

// modules/database.js

// initialize the database
const db = initializeDatabase();

// export a "getter" for the database instance
export const get = () => db;

然后,当您想要使用数据库实例时:

// index.js

// import the database "getter"
import { get } from './modules/database';

// perform a query
const rows = get().query('SELECT * FROM table');

只需在您想要使用数据库的任何地方导入modules/database