【发布时间】:2015-03-30 20:53:05
【问题描述】:
使用以下控制器,我如何在同一个控制器中调用另一个方法?
具体来说,在成功的 signup() 中调用 login(),同时在表单使用 login() 时保留相同的功能?
this.login(newUser) 行不起作用,普通旧 login(newUser) 也不起作用
在这两种情况下,我都会收到错误:
TypeError: Cannot call method 'login' of undefined
var mongoskin = require('mongoskin');
module.exports = {
login: (function (req, res) {
req.db.collection('auth').findOne({_id: mongoskin.helper.toObjectID(req.body.id)},
function (err, results) {
// log person in and send results to client
}
)
}),
signup: (function (req, res) {
var user = req.body;
req.db.collection('auth').insert(user, function (err, newUser) {
// after adding user, automatically log them in
// does not work:
//login(newUser, function (err) {
// do something
//})
// does not work:
this.login(newUser, function (err) {
// do something
})
}
)
})
}
【问题讨论】:
-
我倾向于在导出之外定义函数,然后在导出中和其他函数中都可以引用它。