javascript - async fn 的模块导出结果
问题描述
我正在使用标准节点mysql
包并抽象出我的数据库连接。
const mysql = require('mysql');
const connection = mysql.createConnection({
host: host,
user: user,
password: password,
database: database
});
module.exports = connection;
我想使用promises
并且正在尝试使用包装好的promise-mysql
包。
但是,我不清楚我是否仍然可以导出我的connection
对象。
const mysql = require('promise-mysql');
const connection = await mysql.createConnection({
host: host,
user: user,
password: password,
database: database
});
module.exports = connection;
我是否必须将其包裹module.exports
在 IIFE 或其他东西中?
解决方案
您可以将导出设置为createConnection
调用返回的 Promise。另请注意,在 ES6 中,您可以使用简写的属性名称以保持简洁和可读性:
const mysql = require('promise-mysql');
module.exports = mysql.createConnection({
host,
user,
password,
database
});
然后用户可以通过调用.then
Promise 来使用它,例如:
const connectionProm = require('script.js');
connectionProm.then((connection) => {
// do stuff with connection
});
如果您不喜欢.then
在使用连接的任何地方调用,另一种方法是使用依赖注入将连接作为参数向下传递,以便连接.then
只需要存在于脚本的入口点中。
// index.js
connectionProm.then((connection) => {
// do stuff with connection
// pass it around as needed
});
// do NOT import or call connectionProm.then anywhere else
推荐阅读
- python-3.x - 无法使例外条件按预期运行
- python - 带有内部类属性的 Python 自定义字典
- user-defined-functions - Snowflake UDTF (User-Defined-Table-Function) SQL 编译错误:无法评估不支持的子查询类型
- python - 尝试使用 Django、Postgresql 和 Jquery 为 25,000 行 NBA 数据创建动态搜索/过滤表
- git - 在公共 Git 存储库中搜索代码更新的提交
- javascript - 使用 aws-sdk-react-native 的实例差异 AWS 存储桶
- winforms - 从 Google 日历读取任务时出现“API 密钥无效”错误
- docker - 在 Kubernetes 主节点(Kubernetes 外部)上运行 docker 容器
- javascript - 将带有时区的 Javascript 日期声明为 0
- html - 如何制作文本框以填补 html 中其他两个控件之间的空白