我有这个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()不是一个功能。
如何传递代理并获取其方法?
答案 0 :(得分:0)
如果您未在前端使用此功能,则可以将每个功能作为middlware传递,直到您准备好构建您的响应为止。我会对每个步骤执行验证,以确保请求正文具有执行操作所需的一切。我不确定你为什么要调用实际端点定义中的另一个中间件函数。你可以链接功能:D
SELECT * FROM Parent
JOIN Child ON Child.parent_id = Parent.id
WHERE Child.name IN ('John', 'Mike')

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