如何传递一个类并调用一个类的函数javascript

时间:2018-06-05 17:13:26

标签: javascript node.js class express es6-class

我有这个JS类

Agent.js

class Agent {
  constructor(agentId) {
    this.agentId = agentId
  }
  getProducts() {
    return arrayOfProducts[]
  }
}

在我的登录过程中,我创建了一个新代理:

login.js

function login() {
  //tl;dr
  var agent = new Agent('123')
  req.user = agent
}

在这里,我将代理传递给另一个函数

index.js

router.get('/dashboard', (req, res, next) => {
      getUserData.dashboard(req.user, res, next)
    }, (req, res, next) => { //res.render...    });

我不想从每个视图传递产品,所以在仪表板上我尝试获取代理数据而不是登录。

getUserData.js

var dashboard = (agent, res, next) => {
    console.log(typeof agent) // returns 'object'
    //get products
    var products = agent.getProducts();
next()
}

module.exports = {
dashboard : dashboard 
}

我收到错误说:

  

getProducts()不是一个功能。

如何传递代理并获取其方法?

1 个答案:

答案 0 :(得分:0)

如果您未在前端使用此功能,则可以将每个功能作为middlware传递,直到您准备好构建您的响应为止。我会对每个步骤执行验证,以确保请求正文具有执行操作所需的一切。我不确定你为什么要调用实际端点定义中的另一个中间件函数。你可以链接功能:D



SELECT * FROM Parent
JOIN Child ON Child.parent_id = Parent.id
WHERE Child.name IN ('John', 'Mike')




请注意,如果您尝试在前端使用该方法,JSON不保留方法,您必须在前面重新定义类并从响应构造实例体