在express4中,将数据库实例存储在app.locals中或使用app.set存储它是不好的做法吗?因为我正在考虑它,因为我在整个应用程序中都需要它,所以访问起来会更容易。
最佳答案
它应该工作得很好,不,我不认为这是不好的做法(至少不是可怕) - 毕竟,app.locals
旨在为您提供一个安全的地方来放置您的全局值。
但是,使用 Express 存储像这样的各种全局值确实会导致您的应用程序与 Express 紧密绑定(bind)。如果您决定删除 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
即可。
关于node.js - express 4 : Storing db instance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41981875/