无法访问类中的“ this”对象

时间:2018-10-27 15:45:42

标签: javascript node.js mongodb express mongoose

我在制作一个控制器时遇到问题,在该控制器中有一个具有登录和createuser方法的userController类,并且我试图访问从此对象描述的方法,但无法访问this.userExists()方法。当我尝试访问时,它表明userExists未定义。

import User from '../models/User';
class userController {
    userExists(username) {
        User.findOne({ username }, (err, user) => {
            if (!!user) {
                return true;
            } else {
                return false;
            }
        });
    }
    login(req, res) {
        const data = req.body;
        const { username } = data;
        console.log(this);

        if (!this.userExists(username)) { //returns undefined
            res.status(404).json({ success: false, error: 'User not found' });
            return;
        }
        User.findOne(data, ('name', 'username'), (err, user) => {
            console.log(user);
            if (err) {
                res.status(400).json({ success: false, error: 'Error in sever' });
            } else {
                if (user) {
                    res.status(200).json({ success: true, user, token: user.generateToken() });
                } else {
                    res.status(404).json({ success: false, error: 'user not found' });
                }
            }
        });
    }

    create(req, res) {
        const data = req.body;
        if (this.userExists) {
            res.status(403).json({ success: false, error: 'User already exists' });
            return;
        }
        console.log(data);
        const user = new User(data);
        user.save((err, data) => {
            if (err) {
                console.log(err);
                res.status(400).json({ success: false, error: 'Error in server' });
            } else {
                res.status(200).json({ success: true, user });
            }
        });
    }
}

export default new userController();

0 个答案:

没有答案