TypeError: невозможно прочитать свойство trim of undefined в приложении Node - PullRequest
0 голосов
/ 04 августа 2020

Я работаю над приложением javascript и у меня есть модель MVC, в контроллерах есть файл userController. js, а в моделях есть пользователь. js в файле функции очистки в папке Models . почему я получаю TypeError: Cannot read property 'trim' of undefined this error

//User.js files code goes here 

let User = function (dataUser) {
  this.dataUser = dataUser
  this.errors = []
}

// В функции очистки я проверил строку типа ввода, а затем избегал любых фиктивных записей, используя свойства обрезки и строчные буквы, но Я получаю сообщение об ошибке ie Невозможно прочесть свойство 'trim' неопределенного значения этой ошибки

User.prototype.cleanUp = function () {
  if (typeof this.dataUser.username != "string") {
    this.dataUser.username = ""
  }
  if (typeof this.dataUser.email != "string") {
    this.dataUser.username = ""
  }
  if (typeof this.dataUser.password != "string") {
    this.dataUser.username = ""
  }
  this.dataUser = {
    username: this.dataUser.username.trim().toLowerCase(),
    email: this.dataUser.email.trim().toLowerCase(),
    password: this.dataUser.password
  }
}
User.prototype.login = function (callback) {
  this.cleanUp()
  usersCollection.findOne({ username: this.dataUser.username }, (err, attemptedUser) => {
    if (attemptedUser && attemptedUser.password == this.dataUser.password) {
      callback("Success")
    } else {
      callback("Invalid  username / password")
    }
  })
}
                    
// userController.js code 
exports.login = function (req, res) {
  let user = new User(req.body)
  user.login(function (result) {
    res.send(result)
  })
}

                
                    
                 

1 Ответ

0 голосов
/ 04 августа 2020

Это означает, что ключ, который вы хотите обрезать внутри dataUser, отсутствует. Поэтому, чтобы исправить это, вам нужно будет поставить проверку if перед выполнением операции trim(). Вы можете написать что-то вроде этого:

this.dataUser = {
    username: this?.dataUser?.username?.trim().toLowerCase(),
    email: this?.dataUser?.email?.trim().toLowerCase(),
    password: this?.dataUser?.password
  }

Это самый короткий способ исправить это.

...