无法从javascript中的另一个文件访问嵌套函数

yrdbyhpb  于 2022-11-27  发布在  Java
关注(0)|答案(1)|浏览(122)

我正在尝试用nodejs&fastify制作一个分层架构。

import {UserRepository} from "../repositories/UserRepository.js"

const AuthController = (UserRepository) => {
const getUserOne =  () => {
    return "bla"
}

return {getUserOne}
}

export default AuthController

我只是尝试创建一个依赖于UserRepository的控制器,然后我尝试将此控制器注入到路由文件中,如下所示:

import AuthController from "../controllers/AuthController.js";
console.log(AuthController.getUser)
export function Auth(f,  opts, done) {
f.post('/register', {}, AuthController.getUserOne )

done()
}

但是我从来没有从路由器上获得getUserOne函数,我也在网上看到了一些类似的例子,但这些都没有帮助我。
我到底错过了什么?

  • 谢谢-谢谢
jutyujz0

jutyujz01#

您已经将AuthController定义为一个函数,该函数 * 返回 * 一个带有getUserOne函数属性的对象。因此,为了像您希望的那样传递getUserOne函数,您需要 * 调用 * AuthController函数,然后在返回的对象上引用getUserOne函数属性:

import AuthController from "../controllers/AuthController.js";

export function Auth(f,  opts, done) {
  f.post('/register', {}, AuthController().getUserOne )

  done()
}

如果要使用.(点)表示法,则需要使用this关键字将getUserOne函数定义为AuthController函数的 * 属性 *:

const AuthController = (UserRepository) => {
  this.getUserOne =  () => {
      return "bla"
  }

  return {getUserOne}
}

然后,您将能够像上面那样访问getUserOne函数

相关问题