Почему я не получаю ошибку при удалении таблицы, которая не существует в sqlite? - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть функция, которая удаляет таблицу в базе данных sqlite в проекте expo response. Если таблица существует в базе данных, оператор console.log печатает table dropped. Но если я запускаю ту же самую функцию два раза подряд, я ожидаю, что она скажет no results, потому что она уже была удалена ранее, но на консоли ничего не печатается.

Почему это? И как мне это исправить? Я хочу знать, если транзакции sqlite завершатся неудачно.

db.transaction(tx => {
        tx.executeSql(
            'DROP TABLE tableName;',
            [],
            (tx, results) => {
                if (results && results.rows && results.rows._array) {
                    /* do something with the items */
                    // results.rows._array holds all the results.
                    console.log(JSON.stringify(results.rows._array));
                    console.log('table dropped')
                }else{
                    console.log('no results')
                }
            }
        )
    });

1 Ответ

2 голосов
/ 04 апреля 2019

Попытка отбросить несуществующую таблицу приводит к ошибке.У вас есть только успешный обратный вызов, вам также нужен обратный вызов с ошибкой.

db.transaction(tx => {
  tx.executeSql(
    'DROP TABLE tableName;', [],
    (tx, results) => {
      if (results && results.rows && results.rows._array) {
        /* do something with the items */
        // results.rows._array holds all the results.
        console.log(JSON.stringify(results.rows._array));
        console.log('table dropped')
      } else {
        console.log('no results')
      }
    },
    (tx, error) => {
      console.log(error);
    }
  )
});
...