首页 > 解决方案 > 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因此我们可以在它注册后随时调用它。

有什么想法/解决方案吗?

标签: hapijs

解决方案


推荐阅读