Unhandled rejection TypeError: Cannot read property 'tblUsers' of undefined

132
26 марта 2019, 22:20

Всем привет, не могу понять как задать поле у класса. Использую node v10.11.0

Вот такой код:

Users.js

class Users {
        constructor(sequelize, Sequelize) {
            this.sequelize = sequelize;
            this.tblUsers = this.sequelize.define('users', {
                id: {
                    type: Sequelize.INTEGER,
                    primaryKey: true
                },
                login: Sequelize.STRING,
                pass: Sequelize.STRING
            });
        }
        checkAuthUser(req) {
            this.sequelize.sync().then(function () {
                this.tblUsers.findOne({ // вот эта 17 строка про которую говориться в ошибке
                    where: {
                        login: req.body.login,
                        pass: req.body.pass
                    }
                }).then(function (data) {
                    console.log(data);
                    if (data.dataValues) {
                        return true;
                    } else {
                        return false;
                    }
                });
            });
        }
    }
module.exports = Users;

И вот такой index.js

const user = require('./src/Users');
var Users = new user(sequelize, Sequelize);
    app.post('/auth/', function (req, res) {
        Users.checkAuthUser(req);
        res.send('asds');
    });

Но при отправке формы на /auth методом POST получаю ошибку:

Unhandled rejection TypeError: Cannot read property 'tblUsers' of undefined                                                                                             
    at /Users/qwerty/src/sport/src/Users.js:17:18

Я понимаю, что в ошибке говориться про, то что типа не задано поле tblUsers класса Users, но я не понимаю как его тогда правильно задать. Во всех документациях по ES6 и ES5 приводится пример, где таким образом как у меня в конструкторе создаются(инициализируются) поля класса.

this.tblUser = 'какие-то данные';

Помогите плиз я очень чета туплю :-)

Answer 1

checkAuthUser(req) { 
  var tblUsers = this.tblUsers; 
  this.sequelize.sync().then(function () { 
      tblUsers.findOne({ // вот эта 17 строка про которую говориться в ошибке 
          where: { 
              login: req.body.login, 
              pass: req.body.pass 
          } 
      }).then(function (data) { 
          console.log(data); 
          if (data.dataValues) { 
              return true; 
          } else { 
              return false; 
          } 
      }); 
  }); 
}

я думаю, что ошибка из-за видимости переменных

READ ALSO
помогите пожалуйста с owl-carousel2

помогите пожалуйста с owl-carousel2

Помогите с помощью плагина owl-carousel2 сделать autoplay через 3 секунды

156
Сумма чисел массива

Сумма чисел массива

Задачи: есть две переменные "a" и "b" необходимо произвести сумму чисел от переменной "а" до переменной "b"

138
Как вызвать magnific popup без клика?

Как вызвать magnific popup без клика?

Как можно вызвать Magnific Popup без клика на кнопку? Я нашел паблик методы в документации, но не могу разобраться как реализовать

166
Проблема с js в браузере

Проблема с js в браузере

Всем привет, пытаюсь отсортировать рандомно созданный массив с координатамиСортирую просто - сравниваю первые координаты

157