hapijs - Hapi 17:将服务器属性公开给模块注册
问题描述
我们正在将我们的 Hapi 16 应用程序升级到 Hapi 17 和 Hapi-Mysql-2,并且在注册模块时遇到了访问服务器属性的问题。
Hapi-mysql-2 公开注册的数据库服务器server.mysql.pool[x]
,我们将其公开为req.server.plugin.db.name
虽然在大多数情况下,这种访问数据库的方式很好,但在某些情况下,我们希望在模块注册后立即访问数据库。但是,在这些情况下,既不可用,req
也不server
可用。
例如
async function loadAllGroups (mydb) {
const sql = 'SELECT * ' +
'FROM groups ' +
'ORDER BY name ASC;'
const [data] = await mydb.query(sql, [])
return data
}
loadAllGroups(req.server.plugins.dbs.name)
.then((data) => {
setGroups(data)
})
module.exports = new MyController()
只要在我的路由中注册为处理程序,loadAllGroups
就会调用上面的内容。mycontroller
在 Hapi 16 版本中,没有挂接 mysql 服务器,server
因此我们可以在它注册后随时调用它。
有什么想法/解决方案吗?
解决方案
推荐阅读
- docker - 码头集装箱和“iptables -I FORWARD -j NFQUEUE”
- excel - 在没有打印区域的 excel 中查找分页符
- vhdl - 为什么我把它当作一个空的选择设计?
- sql-server - 无法从 RHEL SQL Server 连接到 Windows SQL Server 链接实例
- python - R - statsmodel - 'ARIMAResults' 对象没有属性“'endog'” - python
- testing - 选择器超时加速测试
- sqlalchemy - SQLAlchemy 日期字段未使用 server_onupdate 更新
- android - 简单的 Firebase 通知在 Android 上不起作用
- django - 在 DigitalOcean 应用程序上使用 VueJS 部署 Django
- snowflake-cloud-data-platform - 根据小表的结果修剪大表