Не умеет считать записи и проверять логин в Ionic 3 и Angular - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть приложение, в котором пользователь регистрирует себя, предоставляя свой адрес электронной почты и пароль, которые хранятся в SQLite DB.Затем пользователь пытается войти в приложение, используя тот же адрес электронной почты и пароль, и после успешного входа перенаправляется на домашнюю страницу.

Я не могу проверить пользователя на основании введенного адреса электронной почты и пароля.Я не уверен, как проанализировать int, возвращенный после выполнения SELECT COUNT(*) FROM user WHERE email=? AND password=? AND active='Y'; для таблицы.

login.ts (вызывается при нажатии кнопки входа в систему)

 doLogin(user: User) {
    //check if the record exits with the same email and password
    this.userProvider.validLogin(user.email, user.password)
      .then((data) => {
        console.log("Validated user successfully..." + data);
      })
      .catch((e) => {
        console.log("Error: " + JSON.stringify(e));
      });

    //navigate to next page now
    this.navCtrl.push(SetupPage)
      .then(() => console.log("Navigating to next page now..."))
      .catch((e) => console.log("Error: " + JSON.stringify(e)));
  }

user.ts (UserProvider)

validLogin(email: string, password: string): Promise<any> {
    console.log("Validate user login..." + email + ", " + password);
    return this.databaseProvider.getDatabase().then(database => {
      return database.executeSql(SQL_VALID_LOGIN, [email, password])
        .then((data) => {
          //SHOULD RETURN 1 ROW IF THE USER IS VALID, CURRENTLY RETURNING NaN
          //NOT SURE HOW TO PARSE THIS AND RETURN IT BACK 
          //WANT TO RETURN "TRUE" OR "FALSE"
          console.log("Executed Valid Login sql..." + parseInt(data));
        }).catch((e) => {
          console.error("Error: " + JSON.stringify(e));
        });
    });
  }

Журнал консоли:

[app-scripts] [00:19:59]  console.log: Validate user login...ab@ab.com, 123456
[app-scripts] [00:19:59]  console.log: Executed Valid Login sql...NaN
[app-scripts] [00:19:59]  console.log: Validated user successfully...undefined
[app-scripts] [00:19:59]  console.log: Navigating to next page now...

1 Ответ

0 голосов
/ 18 декабря 2018

Ваш запрос всегда возвращает данные одной строки и одного столбца.Имя столбца будет COUNT (*) .И вам не нужно анализировать значение как целое число, поскольку оно уже является целым числом.

измените значение validLogin на следующее.

validLogin(email: string, password: string): Promise<any> {
    console.log("Validate user login..." + email + ", " + password);
    return this.databaseProvider.getDatabase().then(database => {
      return database.executeSql(SQL_VALID_LOGIN, [email, password])
        .then((data) => {
          //SHOULD RETURN 1 ROW IF THE USER IS VALID, CURRENTLY RETURNING NaN
          //NOT SURE HOW TO PARSE THIS AND RETURN IT BACK 
          //WANT TO RETURN "TRUE" OR "FALSE"
          console.log("Executed Valid Login sql..." + data.item(0)['COUNT(*)']);
        }).catch((e) => {
          console.error("Error: " + JSON.stringify(e));
        });
    });
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...