Profile.js代码如下所示
'use strict';
var service = require('../services/Profile');
class Profile {
updateProfile(req, resp) {
this.updateUserDetails(req, resp);
}
updateUserDetails(req, resp){
var admin = req.body;
resp.json({"success":true,"message":"User Updated"});
}
}
module.exports = new Profile();
server.js代码如下所示
...... Some code -------
var profile = require("./controllers/Profile")
app.put("/api/profile", auth, profile.updateProfile);
...... Some code -------
当我拨打电话时<> / api / profile我收到错误
TypeError: Cannot read property 'updateUserDetails' of undefined ,
(at line number of code this.updateUserDetails(req, resp);)
由于存在一些常见的逻辑,所以我需要转移到某个功能并想要在不同的地方调用,但是我收到了这个错误。我是寻求帮助的节点js的新手。
答案 0 :(得分:1)
这是对this
在javascript中如何运作的经典误解。我建议您搜索stackoverflow中的短语"how this works in javascript"
。
至于你的代码,你需要这样做:
app.put("/api/profile", auth, function (req,res) {
profile.updateProfile(req,res)
});
或者这个:
app.put("/api/profile", auth, profile.updateProfile.bind(profile));
答案 1 :(得分:0)
我将该功能移出课堂并使用它,它起作用了
'use strict';
var service = require('../services/Profile');
class Profile {
updateProfile(req, resp) {
updateUserDetails(req, resp);
}
}
function updateUserDetails(req, resp){
var admin = req.body;
resp.json({"success":true,"message":"User Updated"});
}
module.exports = new Profile();
答案 2 :(得分:0)
将您的代码更改为:
var prof = new Profile();
module.exports = prof;
然后在其他方法中使用它:
class Profile {
updateProfile(req, resp) {
prof.updateUserDetails(req, resp);
}
这应该可以正常工作。